天天看點

zabbix_agentd啟動時IPC和共享記憶體段問題

問題1:

zabbix_agentd [16428]: cannot recreate Zabbix semaphores for IPC key 0x7a026869 Semaphore ID 4294967295: [22] Invalid argument

檢視KEY為0x7a026869的信号隊列:

[[email protected] zabbix]# ipcs 0x7a026869

--------- 消息隊列 -----------

鍵 msqid 擁有者 權限 已用位元組數 消息

------------ 共享記憶體段 --------------

鍵 shmid 擁有者 權限 位元組 nattch 狀态

0x6c026869 98304 admin 600 657056 6

--------- 信号量數組 -----------

鍵 semid 擁有者 權限 nsems

0x7a026869 196608 admin 600 13

原因:

我這裡zabbix_agentd啟動的時候配置的屬主屬組是zabbix,而之前估計是啟動的時候用了admin身份,導緻這裡的信号量數組和共享記憶體段的屬主都是admin,可能是因為某種原因非正常關閉了zabbix_agentd,導緻這裡的内容沒有關閉,但是每個程序啟動的時候其key值是固定的,是以當我修改了zabbix_agentd啟動屬主屬組的時候,它沒有權限删除和重新建立信号量數組,進而出現了無法啟動的問題;

解決辦法(兩種方法都已驗證):

方法1:删除信号量數組

ipcrm -S 0x7a026869

然後啟動zabbix agentd就可以了。

方法2:直接修改zabbix_agentd的啟動屬主為admin即可正常啟動。

下圖為zabbix_agentd以zabbix屬主身份啟動之後檢視相關信号隊列和共享記憶體段的資訊:

zabbix_agentd啟動時IPC和共享記憶體段問題

[[email protected] admin]# ipcs 0x7a026869

--------- 消息隊列 -----------

鍵 msqid 擁有者 權限 已用位元組數 消息

------------ 共享記憶體段 --------------

鍵 shmid 擁有者 權限 位元組 nattch 狀态

0x6c026869 98304 zabbix 600 657056 6

--------- 信号量數組 -----------

鍵 semid 擁有者 權限 nsems

0x7a026869 196608 zabbix 600 13

問題2:

zabbix_agentd [19609]: cannot attach to existing shared memory: [13] Permission denied

19609:20170714:101213.480 cannot allocate shared memory for collector

檢視共享記憶體段:

[[email protected] zabbix]# ipcs -m

------------ 共享記憶體段 --------------

鍵 shmid 擁有者 權限 位元組 nattch 狀态

0x6c026869 0 admin 600 657056 0

[[email protected] zabbix]# ipcrm -m 0x6c026869

ipcrm: 解析參數失敗: '0x6c026869'

删除共享記憶體(注意,這裡對共享記憶體段的操作要使用shmid值):

[[email protected] zabbix]# ipcrm -m 0