The previous answer is correct, but does not give a practical algorithm for humans, because it is a nightmare to calculate the curvature tensor. You need a good hand algorithm, or else you need a symbolic manipulation package. I prefer hand calculations for the symmetric Ansatzes, because they are always revealing.
The traditional simplified method is to use curvature forms, and this method is described in Misner Thorne and Wheeler. It is indespensible for understanding Kerr Solutions. It also pays to study the Newman-Penrose formalism, because it gives physical insight. I prefer to use my own mathematically inelegant home-made method, because much of the simplification in the advanced methods is really only due to the use of what is called "sparse-matrix computation" in the computer science literature.
If you have a matrix which is mostly zeros, like the on-diagonal curvature, you shouldn't write it in matrix form, unless you want to build good strong writing-hand muscles. Introduce noncovariant basis tensors "l_{ij}" which are nonzero in i,j position. Then write the metric in a mostly-plus convention as:
$$g_{\mu\nu} = -A l_{00} + B l_{11} + C l_{22} $$ $$g^{\mu\nu} = -{1\over A}l^{00} + {1\over B} l^{11} + {1\over C}l^{22}$$
Where I have gone to three dimensions so as to prevent a hopelessly long answer, and where I hope the notation is clear. For theoretical elegance, the basis tensor $l_{00}$ should really be written as $l^{00}_{\mu\nu}$ if you want it to be consistent with the usual index conventions, but since the goal is to get the writing muscles as flabby as possible, don't do that. Since the l's are ridiculously coordinate dependent, you can express ridiculously non-tensorial objects like the connection coefficients and the pseudo-stress-energy tensor.
Calculating the connection
There are tricks to calculating the connection, like deriving the geodesic equation, but I won't use them. If you use the basis-tensors, it is no work at all to get the connection coefficients, and with practice, you can do most of the work in your head for the simpler Ansatzes.
First, differentiate the metric. Since "diagonal" is not much of a simplification, I will assume "diagonal and dependent only on x1 and x0". I will use a prime for differentiating with respect to $x_1$, and a dot for differentiating with respect to $x_0$:
$$g_{\mu\nu,\alpha} = - \dot{A} l_{000} - A' l_{001} + \dot{B}l_{110} + B'l_{111} + \dot{C}l_{220} + C' l_{221}$$
The lesson is--- differentiation is trivial. Notice that this is symmetric on the first two indices, and nothing special on the third index. The Christoffel symbols are symmetric on the last two indices, and nothing special on the first. You transfer symmetry between index positions like this:
$$P_{i|jk} = Q_{ij|k} + Q_{ik|j} - Q_{jk|i}$$
Where P is symmetric in the last two position, and Q is symmetric in the first two. Get used to this, because it comes up a lot. The first term has the same index order just by using a good index order convention, the second term forcibly symmetrizes the second and third positions, and the last term is required so that P keeps all the information in Q. You can do this procedure on the l's automatically, just by replacing $l_{001}$ with $l_{001} + l_{010} - l_{100}$, and so on. This is what you do to get $\Gamma$ from the derivative of g.
Here is the formula for the all-lower-index $\Gamma$ (its not written this way ever, because $\Gamma$ is not a tensor, but I do it here, just to spare the writing hand).
$$\Gamma_{\mu|\nu\sigma} = -{1\over 2} ( -\dot{A} l_{000} - A'(l_{001} + l_{010} -l_{100}) $$ $$+ \dot{B} (l_{110} + l_{101} - l_{011}) + B' l_{111}$$ $$+ \dot{C}(l_{220} + l_{202} - l_{022}) + C'(l_{221} + l_{212} + l_{122}) )$$
To raise the indices when the metric is diagonal is trivial, you just raise the index on the l and divide by the appropriate diagonal entry:
$$\Gamma^\mu_{\nu\sigma} = {\dot{A}\over 2A} l^0_{00} - {A'\over 2A} (l^0_{01} + l^0_{10}) - {A'\over 2B} l^1_{00} + {\dot{B}\over 2B}(l^1_{10} + l^1_{01}) - {\dot{B}\over 2A}l^0_{11} + {B'\over 2B} l_{111} +... $$
Where the rest should be obvious. With practice, this takes a minute to do by hand.
Calculating the Ricci curvature.
To calculate the curvatures, it is important to trace as you go, because this halves the work. The Riemann curvature always has a bunch of Weyl junk that you mostly don't care about.
I always write the formula for the Riemann tensor this way:
$$ R^\mu_{\nu\lambda\sigma} = \Gamma^\mu_{\nu\lambda,\sigma} \mathrm{(AS)} + \Gamma^\mu_{\nu s}\Gamma^s_{\lambda\sigma} \mathrm{(AS)}$$
The "AS" means subtract the same expression with $\nu$ and $\sigma$ interchanged. This form has the property that it is antisymmetric on the lower first and third index, so this is not the usual convention for the Riemann tensor, which is antisymmetric on the last two indices. But this is easy to fix at the end. Trust me, this is the best convention, you fix it up at the end.
The Ricci trace in this convention is on the first two indices:
$$ R_{\mu\nu} = R^\alpha_{\alpha\mu\nu}$$
This is important, because each term you get in the Riemann tensor comes with an "l", and if the upper number of the l is not the same as the leftmost lower number, then that term doesn't contribute to the Ricci tensor. To get the Ricci tensor, you just ignore all $l^a_{bcd}$ with $a\ne b$ and write down $l_{cd}$ in place of those $l$'s which have $a=b$.
Now, differentiate the expression for $\Gamma$, tacking an index on the end. I will demonstrate with one of the contributions, from taking the $x_1$ derivative of the first term:
$$\Gamma^\mu_{\nu\lambda,\sigma} \mathrm{(AS)} = ..+ ({\dot{A}\over 2A})' (l^0_{001} - l^0_{100})$$
Where the second term is the antisymmetrizer. But now, look at the two l's --- does one of them have a matching index on the top left and bottom left? Yes! So erase the top and bottom left numbers from the l, and you are left with a contribution to the Ricci tensor:
$$({\dot{A}\over 2A})'l_{01}$$
This can all be done in your head, term by term. If you get an $l$ which is $l^0_{221}$ it can't contribute to Ricci, because the bottom first and third index don't match the top, if you get $l^0_{121}$ then it is killed by antisymmetrization, etc, etc, it's all obvious.
Next you need to multiply $\Gamma$ with itself, and trace. Here you work out all the terms. But it is a finite calculation, not a hopeless one. You don't get a contribution unless the leftmost lower index is the same as the upper index, so that leaves only a few terms, and further, you get zero on some l-terms after antisymmetrizing and tracing (in your head). Then there are only a handful of remaining terms, and these are real contributions to the curvature, so there is no way to avoid calculating them.
The first time takes a while, but with practice it only takes some minutes for simpler Ansatzes and some hours for the worst ones.