postgresql的日誌信息

postgresql的操作日誌默認是關閉的,需要對數據庫進行一定的配置後纔可看到日誌信息。日誌存放目錄一般在/PostgreSQL/9.2/data/pg_log

PostgreSQL有3種日誌,分別是pg_log(數據庫運行日誌)、pg_xlog(WAL 日誌,即重做日誌)、pg_clog(事務提交日誌,記錄的是事務的元數據)

pg_log默認是關閉的,需要設置參數啓用此日誌。pg_xlog和pg_clog都是強制打開的,無法關閉。

修改postgresql的配置文件postgresql.conf 存放目錄:PostgreSQL/9.2/data

1.啓用pg_log並配置日誌參數
log_destination = 'csvlog'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_rotation_age = 1d
log_rotation_size = 100MB
log_min_messages = info
# 記錄執行慢的SQL
log_min_duration_statement = 60
log_checkpoints = on
log_connections = on
log_disconnections = on
log_duration = on
log_line_prefix = '%m'
# 監控數據庫中長時間的鎖
log_lock_waits = on
# 記錄DDL操作
log_statement = 'ddl'


2.重啓PostgreSQL即可在$PGDATA/pg_log/ 下看到新生成的日誌。

pg_ctl restart -m fast


--日誌文件目錄   
   日誌的目錄可以通過參數  log_directory 來設置,下面是我的參數設置。
   log_directory = '/var/applog/pg_log'  
    
[postgres@pg_log]$ ll /var/applog/pg_log    
-rw------- 1 postgres postgres 4.8M Mar 14 23:57 postgresql-2011-03-14_000000.csv
-rw------- 1 postgres postgres    0 Mar 14 00:00 postgresql-2011-03-14_000000.log
-rw------- 1 postgres postgres 294K Mar 15 15:10 postgresql-2011-03-15_000000.csv
-rw------- 1 postgres postgres    0 Mar 15 00:00 postgresql-2011-03-15_000000.log

--CSV日誌文件內容
2011-03-15 00:07:03.513 CST,"wapportal","wapportal_216",4137,"172.16.3.43:59356",4d7e361f.1029,3,"idle",2011-03-14 23:37:03 CST,,0,LOG,00000,"disconnection: session time: 0:30:00.086 user=wapportal database=wapportal_216 host=172.16.3.43 port=59356",,,,,,,,,""
2011-03-15 00:07:03.514 CST,,,5173,"",4d7e3d27.1435,1,"",2011-03-15 00:07:03 CST,,0,LOG,00000,"connection received: host=172.16.3.43 port=51135",,,,,,,,,""

   上面兩條是 postgresql-2011-03-15_000000.csv 日誌文件的部分內容 ,由於日誌文件的可讀性
 較差,於是可以通過下面方法將CSV日誌導入到數據庫表裏。詳細如下(我用命令未成功導入)

將CSV日誌導入數據庫表裏   
1--調整參數
log_destination = 'csvlog'
logging_collector = on

    這兩個參數修改後,PG SERVER 需要重啓。

2--創建日誌記錄表

CREATE TABLE "soc"."postgres_log" (
"logId" int8 DEFAULT nextval('postgres_log_seq'::regclass) NOT NULL,
"log_time" timestamptz(3),
"user_name" text COLLATE "default",
"database_name" text COLLATE "default",
"process_id" int4,
"connection_from" text COLLATE "default",
"session_id" text COLLATE "default",
"session_line_num" int8,
"command_tag" text COLLATE "default",
"session_start_time" timestamptz(6),
"virtual_transaction_id" text COLLATE "default",
"transaction_id" int8,
"error_severity" text COLLATE "default",
"sql_state_code" text COLLATE "default",
"message" text COLLATE "default",
"detail" text COLLATE "default",
"hint" text COLLATE "default",
"internal_query" text COLLATE "default",
"internal_query_pos" int4,
"context" text COLLATE "default",
"query" text COLLATE "default",
"query_pos" int4,
"location" text COLLATE "default",
"application_name" text COLLATE "default"
)
WITH (OIDS=FALSE)

;

CREATE SEQUENCE "soc"."NewSequence"
 INCREMENT 1
 MINVALUE 1
 MAXVALUE 999999999999999999
 START 1
 CACHE 1;

ALTER TABLE "soc"."NewSequence" OWNER TO "soc";

SELECT setval('"soc"."NewSequence"', 1, true);

    備註:創建日誌表 postgres_log 用來保存 CSV日誌數據,創建自增序列。

3--導入操作系統 csv 日誌到表 postgres_log 表
skytf=# copy skytf.postgres_log from '/var/applog/pg_log/postgresql-2011-03-14_000000.csv' with csv;
COPY 26031

skytf=# copy skytf.postgres_log from '/var/applog/pg_log/postgresql-2011-03-15_000000.csv' with csv;
COPY 1297

      備註:文件形式導入導出數據需要以超級用戶 postgres 連接到目標庫。

4--常用日誌分析sql
skytf=# select min(log_time),max(log_time) from skytf.postgres_log;
            min             |            max             
----------------------------+----------------------------
 2011-03-14 14:04:07.275+08 | 2011-03-16 05:04:34.427+08
(1 row)

skytf=> select log_time,database_name,user_name,application_name,message from postgres_log where message like '%duration%';
          log_time          | database_name | user_name | application_name |                                                    mess
age                                                    
----------------------------+---------------+-----------+------------------+--------------------------------------------------------
-------------------------------------------------------
 2011-03-15 00:23:38.957+08 | db_lbs        | lbs       |                  | duration: 1297.440 ms  execute <unnamed>:    SELECT cit
yname,province,the_geom as the_geom FROM china_city   
.......
    
       爲了顯示方便,上面只取一條記錄。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章