Timely status updates are crucial to enabling applications in massive Internet of Things (IoT). This paper measures the data-freshness performance of a status update system with an energy harvesting transmitter, considering the randomness in information generation, transmission and energy harvesting. The performance is evaluated by a non-linear function of age of information (AoI) that is defined as the time elapsed since the generation of the most up-to-date status information at the receiver. The system is formulated as two queues with status packet generation and energy arrivals both assumed to be Poisson processes. With negligible service time, both First-Come-First-Served (FCFS) and Last-Come-First-Served (LCFS) disciplines for arbitrary buffer and battery capacities are considered, and a method for calculating the average penalty with non-linear penalty functions is proposed. The average AoI, the average penalty under exponential penalty function, and AoI's threshold violation probability are obtained in closed form. When the service time is assumed to follow exponential distribution, matrix geometric method is used to obtain the average peak AoI. The results illustrate that under the FCFS discipline, the status update frequency needs to be carefully chosen according to the service rate and energy arrival rate in order to minimize the average penalty.