Skip to content

Instantly share code, notes, and snippets.

@mjf
Last active August 8, 2022 05:48
Show Gist options
  • Save mjf/b2ec896fc00014ec7520c08ea936cb40 to your computer and use it in GitHub Desktop.
Save mjf/b2ec896fc00014ec7520c08ea936cb40 to your computer and use it in GitHub Desktop.
Postgres CSV log parser in Telegraf
# TODO: store just basename of the logfiles (in Starlark may be easy)
# TODO: include more information in tags (at least user_name and application_name?)
#
# INPUTS
#
[[inputs.tail]]
name_override = "postgres_sql_state_code"
files = ["/var/lib/pgsql/14/data/log/postgres-*.csv"]
data_format = "csv"
path_tag = "logfile"
# see https://www.postgresql.org/docs/current/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-CSVLOG
csv_column_names = [
"log_time",
"user_name",
"database_name",
"process_id",
"connection_from",
"session_id",
"session_line_num",
"command_tag",
"session_start_time",
"virtual_transaction_id",
"transaction_id",
"error_severity",
"sql_state_code",
"message",
"detail",
"hint",
"internal_query",
"internal_query_pos",
"context",
"query",
"query_pos",
"location",
"application_name",
"backend_type",
"leader_pid",
"query_id"
]
csv_tag_columns = [
"database_name",
"error_severity",
"sql_state_code"
]
# pass some value as field to be erased later (see the Starlark processor below)
fieldpass = ["process_id"]
#
# PROCESSORS
#
[[processors.starlark]]
source = '''def apply(metric):
# have some value field for the metric so that we can eg. count() over it etc.
metric.fields["value"] = 1
# erase the process_id field
metric.fields.pop("process_id")
# add description (see https://www.postgresql.org/docs/current/errcodes-appendix.html)
if metric.tags["sql_state_code"] == "00000":
metric.tags["sql_state_description"] = "successful_completion"
return metric
if metric.tags["sql_state_code"] == "01000":
metric.tags["sql_state_description"] = "warning"
return metric
if metric.tags["sql_state_code"] == "0100C":
metric.tags["sql_state_description"] = "dynamic_result_sets_returned"
return metric
if metric.tags["sql_state_code"] == "01008":
metric.tags["sql_state_description"] = "implicit_zero_bit_padding"
return metric
if metric.tags["sql_state_code"] == "01003":
metric.tags["sql_state_description"] = "null_value_eliminated_in_set_function"
return metric
if metric.tags["sql_state_code"] == "01007":
metric.tags["sql_state_description"] = "privilege_not_granted"
return metric
if metric.tags["sql_state_code"] == "01006":
metric.tags["sql_state_description"] = "privilege_not_revoked"
return metric
if metric.tags["sql_state_code"] == "01004":
metric.tags["sql_state_description"] = "string_data_right_truncation"
return metric
if metric.tags["sql_state_code"] == "01P01":
metric.tags["sql_state_description"] = "deprecated_feature"
return metric
if metric.tags["sql_state_code"] == "02000":
metric.tags["sql_state_description"] = "no_data"
return metric
if metric.tags["sql_state_code"] == "02001":
metric.tags["sql_state_description"] = "no_additional_dynamic_result_sets_returned"
return metric
if metric.tags["sql_state_code"] == "03000":
metric.tags["sql_state_description"] = "sql_statement_not_yet_complete"
return metric
if metric.tags["sql_state_code"] == "08000":
metric.tags["sql_state_description"] = "connection_exception"
return metric
if metric.tags["sql_state_code"] == "08003":
metric.tags["sql_state_description"] = "connection_does_not_exist"
return metric
if metric.tags["sql_state_code"] == "08006":
metric.tags["sql_state_description"] = "connection_failure"
return metric
if metric.tags["sql_state_code"] == "08001":
metric.tags["sql_state_description"] = "sqlclient_unable_to_establish_sqlconnection"
return metric
if metric.tags["sql_state_code"] == "08004":
metric.tags["sql_state_description"] = "sqlserver_rejected_establishment_of_sqlconnection"
return metric
if metric.tags["sql_state_code"] == "08007":
metric.tags["sql_state_description"] = "transaction_resolution_unknown"
return metric
if metric.tags["sql_state_code"] == "08P01":
metric.tags["sql_state_description"] = "protocol_violation"
return metric
if metric.tags["sql_state_code"] == "09000":
metric.tags["sql_state_description"] = "triggered_action_exception"
return metric
if metric.tags["sql_state_code"] == "0A000":
metric.tags["sql_state_description"] = "feature_not_supported"
return metric
if metric.tags["sql_state_code"] == "0B000":
metric.tags["sql_state_description"] = "invalid_transaction_initiation"
return metric
if metric.tags["sql_state_code"] == "0F000":
metric.tags["sql_state_description"] = "locator_exception"
return metric
if metric.tags["sql_state_code"] == "0F001":
metric.tags["sql_state_description"] = "invalid_locator_specification"
return metric
if metric.tags["sql_state_code"] == "0L000":
metric.tags["sql_state_description"] = "invalid_grantor"
return metric
if metric.tags["sql_state_code"] == "0LP01":
metric.tags["sql_state_description"] = "invalid_grant_operation"
return metric
if metric.tags["sql_state_code"] == "0P000":
metric.tags["sql_state_description"] = "invalid_role_specification"
return metric
if metric.tags["sql_state_code"] == "0Z000":
metric.tags["sql_state_description"] = "diagnostics_exception"
return metric
if metric.tags["sql_state_code"] == "0Z002":
metric.tags["sql_state_description"] = "stacked_diagnostics_accessed_without_active_handler"
return metric
if metric.tags["sql_state_code"] == "20000":
metric.tags["sql_state_description"] = "case_not_found"
return metric
if metric.tags["sql_state_code"] == "21000":
metric.tags["sql_state_description"] = "cardinality_violation"
return metric
if metric.tags["sql_state_code"] == "22000":
metric.tags["sql_state_description"] = "data_exception"
return metric
if metric.tags["sql_state_code"] == "2202E":
metric.tags["sql_state_description"] = "<none>"
return metric
if metric.tags["sql_state_code"] == "2202E":
metric.tags["sql_state_description"] = "array_subscript_error"
return metric
if metric.tags["sql_state_code"] == "22021":
metric.tags["sql_state_description"] = "character_not_in_repertoire"
return metric
if metric.tags["sql_state_code"] == "22008":
metric.tags["sql_state_description"] = "datetime_field_overflow"
return metric
if metric.tags["sql_state_code"] == "22008":
metric.tags["sql_state_description"] = "<none>"
return metric
if metric.tags["sql_state_code"] == "22012":
metric.tags["sql_state_description"] = "division_by_zero"
return metric
if metric.tags["sql_state_code"] == "22005":
metric.tags["sql_state_description"] = "error_in_assignment"
return metric
if metric.tags["sql_state_code"] == "2200B":
metric.tags["sql_state_description"] = "escape_character_conflict"
return metric
if metric.tags["sql_state_code"] == "22022":
metric.tags["sql_state_description"] = "indicator_overflow"
return metric
if metric.tags["sql_state_code"] == "22015":
metric.tags["sql_state_description"] = "interval_field_overflow"
return metric
if metric.tags["sql_state_code"] == "2201E":
metric.tags["sql_state_description"] = "invalid_argument_for_logarithm"
return metric
if metric.tags["sql_state_code"] == "22014":
metric.tags["sql_state_description"] = "invalid_argument_for_ntile_function"
return metric
if metric.tags["sql_state_code"] == "22016":
metric.tags["sql_state_description"] = "invalid_argument_for_nth_value_function"
return metric
if metric.tags["sql_state_code"] == "2201F":
metric.tags["sql_state_description"] = "invalid_argument_for_power_function"
return metric
if metric.tags["sql_state_code"] == "2201G":
metric.tags["sql_state_description"] = "invalid_argument_for_width_bucket_function"
return metric
if metric.tags["sql_state_code"] == "22018":
metric.tags["sql_state_description"] = "invalid_character_value_for_cast"
return metric
if metric.tags["sql_state_code"] == "22007":
metric.tags["sql_state_description"] = "invalid_datetime_format"
return metric
if metric.tags["sql_state_code"] == "22019":
metric.tags["sql_state_description"] = "invalid_escape_character"
return metric
if metric.tags["sql_state_code"] == "2200D":
metric.tags["sql_state_description"] = "invalid_escape_octet"
return metric
if metric.tags["sql_state_code"] == "22025":
metric.tags["sql_state_description"] = "invalid_escape_sequence"
return metric
if metric.tags["sql_state_code"] == "22P06":
metric.tags["sql_state_description"] = "nonstandard_use_of_escape_character"
return metric
if metric.tags["sql_state_code"] == "22010":
metric.tags["sql_state_description"] = "invalid_indicator_parameter_value"
return metric
if metric.tags["sql_state_code"] == "22023":
metric.tags["sql_state_description"] = "invalid_parameter_value"
return metric
if metric.tags["sql_state_code"] == "22013":
metric.tags["sql_state_description"] = "invalid_preceding_or_following_size"
return metric
if metric.tags["sql_state_code"] == "2201B":
metric.tags["sql_state_description"] = "invalid_regular_expression"
return metric
if metric.tags["sql_state_code"] == "2201W":
metric.tags["sql_state_description"] = "invalid_row_count_in_limit_clause"
return metric
if metric.tags["sql_state_code"] == "2201X":
metric.tags["sql_state_description"] = "invalid_row_count_in_result_offset_clause"
return metric
if metric.tags["sql_state_code"] == "2202H":
metric.tags["sql_state_description"] = "invalid_tablesample_argument"
return metric
if metric.tags["sql_state_code"] == "2202G":
metric.tags["sql_state_description"] = "invalid_tablesample_repeat"
return metric
if metric.tags["sql_state_code"] == "22009":
metric.tags["sql_state_description"] = "invalid_time_zone_displacement_value"
return metric
if metric.tags["sql_state_code"] == "2200C":
metric.tags["sql_state_description"] = "invalid_use_of_escape_character"
return metric
if metric.tags["sql_state_code"] == "2200G":
metric.tags["sql_state_description"] = "most_specific_type_mismatch"
return metric
if metric.tags["sql_state_code"] == "22004":
metric.tags["sql_state_description"] = "null_value_not_allowed"
return metric
if metric.tags["sql_state_code"] == "22002":
metric.tags["sql_state_description"] = "null_value_no_indicator_parameter"
return metric
if metric.tags["sql_state_code"] == "22003":
metric.tags["sql_state_description"] = "numeric_value_out_of_range"
return metric
if metric.tags["sql_state_code"] == "2200H":
metric.tags["sql_state_description"] = "sequence_generator_limit_exceeded"
return metric
if metric.tags["sql_state_code"] == "22026":
metric.tags["sql_state_description"] = "string_data_length_mismatch"
return metric
if metric.tags["sql_state_code"] == "22001":
metric.tags["sql_state_description"] = "string_data_right_truncation"
return metric
if metric.tags["sql_state_code"] == "22011":
metric.tags["sql_state_description"] = "substring_error"
return metric
if metric.tags["sql_state_code"] == "22027":
metric.tags["sql_state_description"] = "trim_error"
return metric
if metric.tags["sql_state_code"] == "22024":
metric.tags["sql_state_description"] = "unterminated_c_string"
return metric
if metric.tags["sql_state_code"] == "2200F":
metric.tags["sql_state_description"] = "zero_length_character_string"
return metric
if metric.tags["sql_state_code"] == "22P01":
metric.tags["sql_state_description"] = "floating_point_exception"
return metric
if metric.tags["sql_state_code"] == "22P02":
metric.tags["sql_state_description"] = "invalid_text_representation"
return metric
if metric.tags["sql_state_code"] == "22P03":
metric.tags["sql_state_description"] = "invalid_binary_representation"
return metric
if metric.tags["sql_state_code"] == "22P04":
metric.tags["sql_state_description"] = "bad_copy_file_format"
return metric
if metric.tags["sql_state_code"] == "22P05":
metric.tags["sql_state_description"] = "untranslatable_character"
return metric
if metric.tags["sql_state_code"] == "2200L":
metric.tags["sql_state_description"] = "not_an_xml_document"
return metric
if metric.tags["sql_state_code"] == "2200M":
metric.tags["sql_state_description"] = "invalid_xml_document"
return metric
if metric.tags["sql_state_code"] == "2200N":
metric.tags["sql_state_description"] = "invalid_xml_content"
return metric
if metric.tags["sql_state_code"] == "2200S":
metric.tags["sql_state_description"] = "invalid_xml_comment"
return metric
if metric.tags["sql_state_code"] == "2200T":
metric.tags["sql_state_description"] = "invalid_xml_processing_instruction"
return metric
if metric.tags["sql_state_code"] == "22030":
metric.tags["sql_state_description"] = "duplicate_json_object_key_value"
return metric
if metric.tags["sql_state_code"] == "22031":
metric.tags["sql_state_description"] = "invalid_argument_for_sql_json_datetime_function"
return metric
if metric.tags["sql_state_code"] == "22032":
metric.tags["sql_state_description"] = "invalid_json_text"
return metric
if metric.tags["sql_state_code"] == "22033":
metric.tags["sql_state_description"] = "invalid_sql_json_subscript"
return metric
if metric.tags["sql_state_code"] == "22034":
metric.tags["sql_state_description"] = "more_than_one_sql_json_item"
return metric
if metric.tags["sql_state_code"] == "22035":
metric.tags["sql_state_description"] = "no_sql_json_item"
return metric
if metric.tags["sql_state_code"] == "22036":
metric.tags["sql_state_description"] = "non_numeric_sql_json_item"
return metric
if metric.tags["sql_state_code"] == "22037":
metric.tags["sql_state_description"] = "non_unique_keys_in_a_json_object"
return metric
if metric.tags["sql_state_code"] == "22038":
metric.tags["sql_state_description"] = "singleton_sql_json_item_required"
return metric
if metric.tags["sql_state_code"] == "22039":
metric.tags["sql_state_description"] = "sql_json_array_not_found"
return metric
if metric.tags["sql_state_code"] == "2203A":
metric.tags["sql_state_description"] = "sql_json_member_not_found"
return metric
if metric.tags["sql_state_code"] == "2203B":
metric.tags["sql_state_description"] = "sql_json_number_not_found"
return metric
if metric.tags["sql_state_code"] == "2203C":
metric.tags["sql_state_description"] = "sql_json_object_not_found"
return metric
if metric.tags["sql_state_code"] == "2203D":
metric.tags["sql_state_description"] = "too_many_json_array_elements"
return metric
if metric.tags["sql_state_code"] == "2203E":
metric.tags["sql_state_description"] = "too_many_json_object_members"
return metric
if metric.tags["sql_state_code"] == "2203F":
metric.tags["sql_state_description"] = "sql_json_scalar_required"
return metric
if metric.tags["sql_state_code"] == "2203G":
metric.tags["sql_state_description"] = "sql_json_item_cannot_be_cast_to_target_type"
return metric
if metric.tags["sql_state_code"] == "23000":
metric.tags["sql_state_description"] = "integrity_constraint_violation"
return metric
if metric.tags["sql_state_code"] == "23001":
metric.tags["sql_state_description"] = "restrict_violation"
return metric
if metric.tags["sql_state_code"] == "23502":
metric.tags["sql_state_description"] = "not_null_violation"
return metric
if metric.tags["sql_state_code"] == "23503":
metric.tags["sql_state_description"] = "foreign_key_violation"
return metric
if metric.tags["sql_state_code"] == "23505":
metric.tags["sql_state_description"] = "unique_violation"
return metric
if metric.tags["sql_state_code"] == "23514":
metric.tags["sql_state_description"] = "check_violation"
return metric
if metric.tags["sql_state_code"] == "23P01":
metric.tags["sql_state_description"] = "exclusion_violation"
return metric
if metric.tags["sql_state_code"] == "24000":
metric.tags["sql_state_description"] = "invalid_cursor_state"
return metric
if metric.tags["sql_state_code"] == "25000":
metric.tags["sql_state_description"] = "invalid_transaction_state"
return metric
if metric.tags["sql_state_code"] == "25001":
metric.tags["sql_state_description"] = "active_sql_transaction"
return metric
if metric.tags["sql_state_code"] == "25002":
metric.tags["sql_state_description"] = "branch_transaction_already_active"
return metric
if metric.tags["sql_state_code"] == "25008":
metric.tags["sql_state_description"] = "held_cursor_requires_same_isolation_level"
return metric
if metric.tags["sql_state_code"] == "25003":
metric.tags["sql_state_description"] = "inappropriate_access_mode_for_branch_transaction"
return metric
if metric.tags["sql_state_code"] == "25004":
metric.tags["sql_state_description"] = "inappropriate_isolation_level_for_branch_transaction"
return metric
if metric.tags["sql_state_code"] == "25005":
metric.tags["sql_state_description"] = "no_active_sql_transaction_for_branch_transaction"
return metric
if metric.tags["sql_state_code"] == "25006":
metric.tags["sql_state_description"] = "read_only_sql_transaction"
return metric
if metric.tags["sql_state_code"] == "25007":
metric.tags["sql_state_description"] = "schema_and_data_statement_mixing_not_supported"
return metric
if metric.tags["sql_state_code"] == "25P01":
metric.tags["sql_state_description"] = "no_active_sql_transaction"
return metric
if metric.tags["sql_state_code"] == "25P02":
metric.tags["sql_state_description"] = "in_failed_sql_transaction"
return metric
if metric.tags["sql_state_code"] == "25P03":
metric.tags["sql_state_description"] = "idle_in_transaction_session_timeout"
return metric
if metric.tags["sql_state_code"] == "26000":
metric.tags["sql_state_description"] = "invalid_sql_statement_name"
return metric
if metric.tags["sql_state_code"] == "27000":
metric.tags["sql_state_description"] = "triggered_data_change_violation"
return metric
if metric.tags["sql_state_code"] == "28000":
metric.tags["sql_state_description"] = "invalid_authorization_specification"
return metric
if metric.tags["sql_state_code"] == "28P01":
metric.tags["sql_state_description"] = "invalid_password"
return metric
if metric.tags["sql_state_code"] == "2B000":
metric.tags["sql_state_description"] = "dependent_privilege_descriptors_still_exist"
return metric
if metric.tags["sql_state_code"] == "2BP01":
metric.tags["sql_state_description"] = "dependent_objects_still_exist"
return metric
if metric.tags["sql_state_code"] == "2D000":
metric.tags["sql_state_description"] = "invalid_transaction_termination"
return metric
if metric.tags["sql_state_code"] == "2F000":
metric.tags["sql_state_description"] = "sql_routine_exception"
return metric
if metric.tags["sql_state_code"] == "2F005":
metric.tags["sql_state_description"] = "function_executed_no_return_statement"
return metric
if metric.tags["sql_state_code"] == "2F002":
metric.tags["sql_state_description"] = "modifying_sql_data_not_permitted"
return metric
if metric.tags["sql_state_code"] == "2F003":
metric.tags["sql_state_description"] = "prohibited_sql_statement_attempted"
return metric
if metric.tags["sql_state_code"] == "2F004":
metric.tags["sql_state_description"] = "reading_sql_data_not_permitted"
return metric
if metric.tags["sql_state_code"] == "34000":
metric.tags["sql_state_description"] = "invalid_cursor_name"
return metric
if metric.tags["sql_state_code"] == "38000":
metric.tags["sql_state_description"] = "external_routine_exception"
return metric
if metric.tags["sql_state_code"] == "38001":
metric.tags["sql_state_description"] = "containing_sql_not_permitted"
return metric
if metric.tags["sql_state_code"] == "38002":
metric.tags["sql_state_description"] = "modifying_sql_data_not_permitted"
return metric
if metric.tags["sql_state_code"] == "38003":
metric.tags["sql_state_description"] = "prohibited_sql_statement_attempted"
return metric
if metric.tags["sql_state_code"] == "38004":
metric.tags["sql_state_description"] = "reading_sql_data_not_permitted"
return metric
if metric.tags["sql_state_code"] == "39000":
metric.tags["sql_state_description"] = "external_routine_invocation_exception"
return metric
if metric.tags["sql_state_code"] == "39001":
metric.tags["sql_state_description"] = "invalid_sqlstate_returned"
return metric
if metric.tags["sql_state_code"] == "39004":
metric.tags["sql_state_description"] = "null_value_not_allowed"
return metric
if metric.tags["sql_state_code"] == "39P01":
metric.tags["sql_state_description"] = "trigger_protocol_violated"
return metric
if metric.tags["sql_state_code"] == "39P02":
metric.tags["sql_state_description"] = "srf_protocol_violated"
return metric
if metric.tags["sql_state_code"] == "39P03":
metric.tags["sql_state_description"] = "event_trigger_protocol_violated"
return metric
if metric.tags["sql_state_code"] == "3B000":
metric.tags["sql_state_description"] = "savepoint_exception"
return metric
if metric.tags["sql_state_code"] == "3B001":
metric.tags["sql_state_description"] = "invalid_savepoint_specification"
return metric
if metric.tags["sql_state_code"] == "3D000":
metric.tags["sql_state_description"] = "invalid_catalog_name"
return metric
if metric.tags["sql_state_code"] == "3F000":
metric.tags["sql_state_description"] = "invalid_schema_name"
return metric
if metric.tags["sql_state_code"] == "40000":
metric.tags["sql_state_description"] = "transaction_rollback"
return metric
if metric.tags["sql_state_code"] == "40002":
metric.tags["sql_state_description"] = "transaction_integrity_constraint_violation"
return metric
if metric.tags["sql_state_code"] == "40001":
metric.tags["sql_state_description"] = "serialization_failure"
return metric
if metric.tags["sql_state_code"] == "40003":
metric.tags["sql_state_description"] = "statement_completion_unknown"
return metric
if metric.tags["sql_state_code"] == "40P01":
metric.tags["sql_state_description"] = "deadlock_detected"
return metric
if metric.tags["sql_state_code"] == "42000":
metric.tags["sql_state_description"] = "syntax_error_or_access_rule_violation"
return metric
if metric.tags["sql_state_code"] == "42601":
metric.tags["sql_state_description"] = "syntax_error"
return metric
if metric.tags["sql_state_code"] == "42501":
metric.tags["sql_state_description"] = "insufficient_privilege"
return metric
if metric.tags["sql_state_code"] == "42846":
metric.tags["sql_state_description"] = "cannot_coerce"
return metric
if metric.tags["sql_state_code"] == "42803":
metric.tags["sql_state_description"] = "grouping_error"
return metric
if metric.tags["sql_state_code"] == "42P20":
metric.tags["sql_state_description"] = "windowing_error"
return metric
if metric.tags["sql_state_code"] == "42P19":
metric.tags["sql_state_description"] = "invalid_recursion"
return metric
if metric.tags["sql_state_code"] == "42830":
metric.tags["sql_state_description"] = "invalid_foreign_key"
return metric
if metric.tags["sql_state_code"] == "42602":
metric.tags["sql_state_description"] = "invalid_name"
return metric
if metric.tags["sql_state_code"] == "42622":
metric.tags["sql_state_description"] = "name_too_long"
return metric
if metric.tags["sql_state_code"] == "42939":
metric.tags["sql_state_description"] = "reserved_name"
return metric
if metric.tags["sql_state_code"] == "42804":
metric.tags["sql_state_description"] = "datatype_mismatch"
return metric
if metric.tags["sql_state_code"] == "42P18":
metric.tags["sql_state_description"] = "indeterminate_datatype"
return metric
if metric.tags["sql_state_code"] == "42P21":
metric.tags["sql_state_description"] = "collation_mismatch"
return metric
if metric.tags["sql_state_code"] == "42P22":
metric.tags["sql_state_description"] = "indeterminate_collation"
return metric
if metric.tags["sql_state_code"] == "42809":
metric.tags["sql_state_description"] = "wrong_object_type"
return metric
if metric.tags["sql_state_code"] == "428C9":
metric.tags["sql_state_description"] = "generated_always"
return metric
if metric.tags["sql_state_code"] == "42703":
metric.tags["sql_state_description"] = "undefined_column"
return metric
if metric.tags["sql_state_code"] == "34000":
metric.tags["sql_state_description"] = "<none>"
return metric
if metric.tags["sql_state_code"] == "3D000":
metric.tags["sql_state_description"] = "<none>"
return metric
if metric.tags["sql_state_code"] == "42883":
metric.tags["sql_state_description"] = "undefined_function"
return metric
if metric.tags["sql_state_code"] == "26000":
metric.tags["sql_state_description"] = "<none>"
return metric
if metric.tags["sql_state_code"] == "3F000":
metric.tags["sql_state_description"] = "<none>"
return metric
if metric.tags["sql_state_code"] == "42P01":
metric.tags["sql_state_description"] = "undefined_table"
return metric
if metric.tags["sql_state_code"] == "42P02":
metric.tags["sql_state_description"] = "undefined_parameter"
return metric
if metric.tags["sql_state_code"] == "42704":
metric.tags["sql_state_description"] = "undefined_object"
return metric
if metric.tags["sql_state_code"] == "42701":
metric.tags["sql_state_description"] = "duplicate_column"
return metric
if metric.tags["sql_state_code"] == "42P03":
metric.tags["sql_state_description"] = "duplicate_cursor"
return metric
if metric.tags["sql_state_code"] == "42P04":
metric.tags["sql_state_description"] = "duplicate_database"
return metric
if metric.tags["sql_state_code"] == "42723":
metric.tags["sql_state_description"] = "duplicate_function"
return metric
if metric.tags["sql_state_code"] == "42P05":
metric.tags["sql_state_description"] = "duplicate_prepared_statement"
return metric
if metric.tags["sql_state_code"] == "42P06":
metric.tags["sql_state_description"] = "duplicate_schema"
return metric
if metric.tags["sql_state_code"] == "42P07":
metric.tags["sql_state_description"] = "duplicate_table"
return metric
if metric.tags["sql_state_code"] == "42712":
metric.tags["sql_state_description"] = "duplicate_alias"
return metric
if metric.tags["sql_state_code"] == "42710":
metric.tags["sql_state_description"] = "duplicate_object"
return metric
if metric.tags["sql_state_code"] == "42702":
metric.tags["sql_state_description"] = "ambiguous_column"
return metric
if metric.tags["sql_state_code"] == "42725":
metric.tags["sql_state_description"] = "ambiguous_function"
return metric
if metric.tags["sql_state_code"] == "42P08":
metric.tags["sql_state_description"] = "ambiguous_parameter"
return metric
if metric.tags["sql_state_code"] == "42P09":
metric.tags["sql_state_description"] = "ambiguous_alias"
return metric
if metric.tags["sql_state_code"] == "42P10":
metric.tags["sql_state_description"] = "invalid_column_reference"
return metric
if metric.tags["sql_state_code"] == "42611":
metric.tags["sql_state_description"] = "invalid_column_definition"
return metric
if metric.tags["sql_state_code"] == "42P11":
metric.tags["sql_state_description"] = "invalid_cursor_definition"
return metric
if metric.tags["sql_state_code"] == "42P12":
metric.tags["sql_state_description"] = "invalid_database_definition"
return metric
if metric.tags["sql_state_code"] == "42P13":
metric.tags["sql_state_description"] = "invalid_function_definition"
return metric
if metric.tags["sql_state_code"] == "42P14":
metric.tags["sql_state_description"] = "invalid_prepared_statement_definition"
return metric
if metric.tags["sql_state_code"] == "42P15":
metric.tags["sql_state_description"] = "invalid_schema_definition"
return metric
if metric.tags["sql_state_code"] == "42P16":
metric.tags["sql_state_description"] = "invalid_table_definition"
return metric
if metric.tags["sql_state_code"] == "42P17":
metric.tags["sql_state_description"] = "invalid_object_definition"
return metric
if metric.tags["sql_state_code"] == "44000":
metric.tags["sql_state_description"] = "with_check_option_violation"
return metric
if metric.tags["sql_state_code"] == "53000":
metric.tags["sql_state_description"] = "insufficient_resources"
return metric
if metric.tags["sql_state_code"] == "53100":
metric.tags["sql_state_description"] = "disk_full"
return metric
if metric.tags["sql_state_code"] == "53200":
metric.tags["sql_state_description"] = "out_of_memory"
return metric
if metric.tags["sql_state_code"] == "53300":
metric.tags["sql_state_description"] = "too_many_connections"
return metric
if metric.tags["sql_state_code"] == "53400":
metric.tags["sql_state_description"] = "configuration_limit_exceeded"
return metric
if metric.tags["sql_state_code"] == "54000":
metric.tags["sql_state_description"] = "program_limit_exceeded"
return metric
if metric.tags["sql_state_code"] == "54001":
metric.tags["sql_state_description"] = "statement_too_complex"
return metric
if metric.tags["sql_state_code"] == "54011":
metric.tags["sql_state_description"] = "too_many_columns"
return metric
if metric.tags["sql_state_code"] == "54023":
metric.tags["sql_state_description"] = "too_many_arguments"
return metric
if metric.tags["sql_state_code"] == "55000":
metric.tags["sql_state_description"] = "object_not_in_prerequisite_state"
return metric
if metric.tags["sql_state_code"] == "55006":
metric.tags["sql_state_description"] = "object_in_use"
return metric
if metric.tags["sql_state_code"] == "55P02":
metric.tags["sql_state_description"] = "cant_change_runtime_param"
return metric
if metric.tags["sql_state_code"] == "55P03":
metric.tags["sql_state_description"] = "lock_not_available"
return metric
if metric.tags["sql_state_code"] == "55P04":
metric.tags["sql_state_description"] = "unsafe_new_enum_value_usage"
return metric
if metric.tags["sql_state_code"] == "57000":
metric.tags["sql_state_description"] = "operator_intervention"
return metric
if metric.tags["sql_state_code"] == "57014":
metric.tags["sql_state_description"] = "query_canceled"
return metric
if metric.tags["sql_state_code"] == "57P01":
metric.tags["sql_state_description"] = "admin_shutdown"
return metric
if metric.tags["sql_state_code"] == "57P02":
metric.tags["sql_state_description"] = "crash_shutdown"
return metric
if metric.tags["sql_state_code"] == "57P03":
metric.tags["sql_state_description"] = "cannot_connect_now"
return metric
if metric.tags["sql_state_code"] == "57P04":
metric.tags["sql_state_description"] = "database_dropped"
return metric
if metric.tags["sql_state_code"] == "57P05":
metric.tags["sql_state_description"] = "idle_session_timeout"
return metric
if metric.tags["sql_state_code"] == "58000":
metric.tags["sql_state_description"] = "system_error"
return metric
if metric.tags["sql_state_code"] == "58030":
metric.tags["sql_state_description"] = "io_error"
return metric
if metric.tags["sql_state_code"] == "58P01":
metric.tags["sql_state_description"] = "undefined_file"
return metric
if metric.tags["sql_state_code"] == "58P02":
metric.tags["sql_state_description"] = "duplicate_file"
return metric
if metric.tags["sql_state_code"] == "72000":
metric.tags["sql_state_description"] = "snapshot_too_old"
return metric
if metric.tags["sql_state_code"] == "F0000":
metric.tags["sql_state_description"] = "config_file_error"
return metric
if metric.tags["sql_state_code"] == "F0001":
metric.tags["sql_state_description"] = "lock_file_exists"
return metric
if metric.tags["sql_state_code"] == "HV000":
metric.tags["sql_state_description"] = "fdw_error"
return metric
if metric.tags["sql_state_code"] == "HV005":
metric.tags["sql_state_description"] = "fdw_column_name_not_found"
return metric
if metric.tags["sql_state_code"] == "HV002":
metric.tags["sql_state_description"] = "fdw_dynamic_parameter_value_needed"
return metric
if metric.tags["sql_state_code"] == "HV010":
metric.tags["sql_state_description"] = "fdw_function_sequence_error"
return metric
if metric.tags["sql_state_code"] == "HV021":
metric.tags["sql_state_description"] = "fdw_inconsistent_descriptor_information"
return metric
if metric.tags["sql_state_code"] == "HV024":
metric.tags["sql_state_description"] = "fdw_invalid_attribute_value"
return metric
if metric.tags["sql_state_code"] == "HV007":
metric.tags["sql_state_description"] = "fdw_invalid_column_name"
return metric
if metric.tags["sql_state_code"] == "HV008":
metric.tags["sql_state_description"] = "fdw_invalid_column_number"
return metric
if metric.tags["sql_state_code"] == "HV004":
metric.tags["sql_state_description"] = "fdw_invalid_data_type"
return metric
if metric.tags["sql_state_code"] == "HV006":
metric.tags["sql_state_description"] = "fdw_invalid_data_type_descriptors"
return metric
if metric.tags["sql_state_code"] == "HV091":
metric.tags["sql_state_description"] = "fdw_invalid_descriptor_field_identifier"
return metric
if metric.tags["sql_state_code"] == "HV00B":
metric.tags["sql_state_description"] = "fdw_invalid_handle"
return metric
if metric.tags["sql_state_code"] == "HV00C":
metric.tags["sql_state_description"] = "fdw_invalid_option_index"
return metric
if metric.tags["sql_state_code"] == "HV00D":
metric.tags["sql_state_description"] = "fdw_invalid_option_name"
return metric
if metric.tags["sql_state_code"] == "HV090":
metric.tags["sql_state_description"] = "fdw_invalid_string_length_or_buffer_length"
return metric
if metric.tags["sql_state_code"] == "HV00A":
metric.tags["sql_state_description"] = "fdw_invalid_string_format"
return metric
if metric.tags["sql_state_code"] == "HV009":
metric.tags["sql_state_description"] = "fdw_invalid_use_of_null_pointer"
return metric
if metric.tags["sql_state_code"] == "HV014":
metric.tags["sql_state_description"] = "fdw_too_many_handles"
return metric
if metric.tags["sql_state_code"] == "HV001":
metric.tags["sql_state_description"] = "fdw_out_of_memory"
return metric
if metric.tags["sql_state_code"] == "HV00P":
metric.tags["sql_state_description"] = "fdw_no_schemas"
return metric
if metric.tags["sql_state_code"] == "HV00J":
metric.tags["sql_state_description"] = "fdw_option_name_not_found"
return metric
if metric.tags["sql_state_code"] == "HV00K":
metric.tags["sql_state_description"] = "fdw_reply_handle"
return metric
if metric.tags["sql_state_code"] == "HV00Q":
metric.tags["sql_state_description"] = "fdw_schema_not_found"
return metric
if metric.tags["sql_state_code"] == "HV00R":
metric.tags["sql_state_description"] = "fdw_table_not_found"
return metric
if metric.tags["sql_state_code"] == "HV00L":
metric.tags["sql_state_description"] = "fdw_unable_to_create_execution"
return metric
if metric.tags["sql_state_code"] == "HV00M":
metric.tags["sql_state_description"] = "fdw_unable_to_create_reply"
return metric
if metric.tags["sql_state_code"] == "HV00N":
metric.tags["sql_state_description"] = "fdw_unable_to_establish_connection"
return metric
if metric.tags["sql_state_code"] == "P0000":
metric.tags["sql_state_description"] = "plpgsql_error"
return metric
if metric.tags["sql_state_code"] == "P0001":
metric.tags["sql_state_description"] = "raise_exception"
return metric
if metric.tags["sql_state_code"] == "P0002":
metric.tags["sql_state_description"] = "no_data_found"
return metric
if metric.tags["sql_state_code"] == "P0003":
metric.tags["sql_state_description"] = "too_many_rows"
return metric
if metric.tags["sql_state_code"] == "P0004":
metric.tags["sql_state_description"] = "assert_failure"
return metric
if metric.tags["sql_state_code"] == "XX000":
metric.tags["sql_state_description"] = "internal_error"
return metric
if metric.tags["sql_state_code"] == "XX001":
metric.tags["sql_state_description"] = "data_corrupted"
return metric
if metric.tags["sql_state_code"] == "XX002":
metric.tags["sql_state_description"] = "index_corrupted"
return metric
return metric
'''
# OUTPUT
# > postgres_sql_state_code,database_name=database,error_severity=WARNING,host=host.example.com,logfile=/var/lib/pgsql/14/data/log/postgres-14.csv,sql_state_code=01000,sql_state_description=warning value=1i 1659703821855444137
# vi:ft=toml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment