天天看點

shell自動收集伺服器硬體系統資訊通過web頁面顯示

又犯了一個錯誤,MySQL的,

lower_case_table_names=1這個參數一定要在安裝完mysql後改為1.不然,以後有肯能會出現,

Error was: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Duplicate column name 'groupl

<code>有幾個地方要注意一下</code>

<code>1.php</code>

<code>php 500 </code>

<code>yum -y </code><code>install</code> <code>php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc </code>

<code>php.ini </code>

<code>修改php.ini配置檔案,error_reporting = E_ALL &amp; ~E_NOTICE</code>

<code>在php.ini中設定</code><code>date</code><code>.timezone的值為PRC,設定好以後的為:</code><code>date</code><code>.timezone=PRC</code>

<code>2.mysql</code>

<code>1)mysql不要使用root</code>

<code>2)如果通過ansible執行的話,用戶端沒有安裝mysql用戶端,需要安裝</code>

<code>yum -y </code><code>install</code> <code>mysql,還需要覆寫my.cnf</code>

<code>cat</code> <code>/etc/my</code><code>.cnf</code>

<code>[mysqld]</code>

<code>datadir=</code><code>/var/lib/mysql</code>

<code>socket=</code><code>/var/lib/mysql/mysql</code><code>.sock</code>

<code>user=mysql</code>

<code>lower_case_table_names=1</code>

<code>default-character-</code><code>set</code> <code>= utf8</code>

<code>character_set_server = utf8</code>

<code>default-storage-engine=InnoDB</code>

<code># Disabling symbolic-links is recommended to prevent assorted security risks</code>

<code>symbolic-links=0</code>

<code>max_allowed_packet=100M</code>

<code>[mysqld_safe]</code>

<code>log-error=</code><code>/var/log/mysqld</code><code>.log</code>

<code>pid-</code><code>file</code><code>=</code><code>/var/run/mysqld/mysqld</code><code>.pid</code>

<code>主要是字元集的問題</code>

<code>3)如果是編譯安裝mysql,那麼用</code><code>which</code> <code>mysql</code>

<code>3.建立資料庫</code>

<code>CREATE TABLE `systeminfo` (</code>

<code>  </code><code>`</code><code>id</code><code>` int(11) NOT NULL AUTO_INCREMENT,</code>

<code>  </code><code>`ip_info` varchar(50) NOT NULL, </code>

<code>   </code><code>`cpu_info` varchar(50) NOT NULL,</code>

<code>  </code><code>`disk_info` varchar(50) NOT NULL,</code>

<code>  </code><code>`mem_info` varchar(50) NOT NULL,</code>

<code>  </code><code>`service_info` varchar(200) NOT NULL,</code>

<code>  </code><code>PRIMARY KEY (`</code><code>id</code><code>`),</code>

<code>  </code><code>UNIQUE KEY `ip_info` (`ip_info`),</code>

<code>  </code><code>UNIQUE KEY `ip_info_2` (`ip_info`)</code>

<code>) ENGINE=MyISAM DEFAULT CHARSET=utf8;</code>

<code>4.修改過後的腳本</code>

<code>cat</code> <code>systeminfo.sh</code>

<code>#!/bin/bash</code>

<code>#auto get system info</code>

<code>echo</code> <code>-e </code><code>"\033[34m\033[1m"</code>

<code>cat</code> <code>&lt;&lt;EOF</code>

<code>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</code>

<code>++++++++++++++++++++Welcome to use system Coolect++++++++++++++++++++++++++++</code>

<code>EOF</code>

<code>ip_info=`</code><code>ifconfig</code><code>|</code><code>awk</code> <code>'/inet addr/ {gsub(/:/," ");print $3}'</code><code>|</code><code>grep</code> <code>-</code><code>v</code> <code>127.0.0.1`</code>

<code>cpu_info1=`</code><code>cat</code> <code>/proc/cpuinfo</code> <code>|</code><code>grep</code> <code>"model name"</code> <code>|</code><code>awk</code> <code>-F: </code><code>'{print $2}'</code><code>|</code><code>sed</code> <code>'s/^//g'</code><code>|</code><code>awk</code> <code>'{print $1,$3,$4,$NF}'</code><code>`</code>

<code>cpu_info2=`</code><code>cat</code> <code>/proc/cpuinfo</code> <code>|</code><code>grep</code> <code>"physical id"</code><code>|</code><code>sort</code><code>|</code><code>uniq</code> <code>-c|</code><code>wc</code> <code>-l`</code>

<code>cpu_info3=`</code><code>grep</code> <code>processor </code><code>/proc/cpuinfo</code><code>|</code><code>wc</code> <code>-l`</code>

<code>serv_info=`</code><code>hostname</code> <code>|</code><code>tail</code> <code>-1`</code>

<code>disk_xinfo=`</code><code>fdisk</code> <code>-l|</code><code>grep</code> <code>"Disk"</code><code>| </code><code>grep</code> <code>-</code><code>v</code> <code>"identifier"</code><code>|</code><code>awk</code> <code>'{print $2,$3,$4}'</code><code>| </code><code>sed</code> <code>'s/,//g'</code><code>`</code>

<code>disk_info=`</code><code>fdisk</code> <code>-l|</code><code>grep</code> <code>"Disk"</code><code>| </code><code>grep</code> <code>-</code><code>v</code> <code>"identifier"</code><code>|</code><code>awk</code> <code>'{print $2,$3,$4}'</code><code>| </code><code>sed</code> <code>'s/,//g'</code><code>|</code><code>grep</code> <code>-</code><code>v</code> <code>mapper|</code><code>awk</code> <code>-F </code><code>' '</code>  <code>'{print $2}'</code><code>|</code><code>awk</code> <code>'{sum += $1} END {print sum}'</code><code>`</code>

<code>mem_info=`</code><code>free</code> <code>-m|</code><code>awk</code> <code>'/Mem/ {printf ("%.f\n",$2/1024)}'</code><code>`</code>

<code>services=(nginx gitlab ntpd tomcat mysql ldap nexus)</code>

<code>for</code> <code>var </code><code>in</code> <code>${services[@]}</code>

<code>do</code>

<code>        </code><code>num=`</code><code>ps</code> <code>-ef|</code><code>grep</code> <code>$var|</code><code>grep</code> <code>-</code><code>v</code> <code>grep</code><code>|</code><code>wc</code> <code>-l`</code>

<code>    </code><code>if</code> <code>[ $num -gt 1 ];</code><code>then</code>

<code>        </code><code>service_info=${var}</code><code>" "</code><code>${service_info}</code>

<code>    </code><code>fi</code>

<code>done</code>

<code>echo</code> <code>-e </code><code>"\033[32m-------------------------------------\033[1m"</code>

<code>echo</code> <code>IPADDR:${ip_info}</code>

<code>echo</code> <code>HOSTNAME:$serv_info</code>

<code>echo</code> <code>CPU_INFO:${cpu_info1}X${cpu_info2}</code>

<code>echo</code> <code>Disk_INFO:$disk_info</code>

<code>echo</code> <code>MEM_INFO:$mem_info</code>

<code>echo</code> <code>service_info:$service_info</code>

<code>#echo -e -n "\033[36m You want to write the data to the databases?\033[1m";read ensure</code>

<code>#if [ "$ensure" == "yes" -o "$ensure" == "y" -o "$ensure" == "Y" ];then</code>

<code>echo</code> <code>"------------------------"</code>

<code>result=`</code><code>which</code> <code>mysql`</code>

<code>if</code> <code>[ $? -</code><code>ne</code> <code>0 ];</code><code>then</code>

<code>   </code><code>yum -y </code><code>install</code> <code>mysql</code>

<code>   </code><code>result=`</code><code>which</code> <code>mysql`</code>

<code>fi</code>

<code>$result -uxx -pxx -h xx -D xx -e </code><code>"insert into systeminfo values('','${ip_info}','${cpu_info3}"</code><code>核</code><code>"','$disk_info"</code><code>G</code><code>"','$mem_info"</code><code>G</code><code>"','$service_info');"</code>

<code>#else</code>

<code>echo</code> <code>"what exit"</code>

<code>exit</code> <code>1</code>

<code>5.通過ansible調用hosts分組執行 </code>

<code>ansible xx -m script -a </code><code>'systeminfo.sh'</code>

<code>6.php環境搭建</code>

<code>php環境用yum搭建,比如yum -y </code><code>install</code> <code>php php-fpm,啟動</code><code>/etc/init</code><code>.d</code><code>/php-fpm</code>

<code>nginx配置檔案</code>

<code>server {</code>

<code>        </code><code>listen  80;</code>

<code>        </code><code>server_name     xx;</code>

<code>        </code><code>access_log      </code><code>/opt/log/check</code><code>.log;</code>

<code>        </code><code>error_log       </code><code>/opt/log/check</code><code>.error;</code>

<code>        </code><code>root </code><code>/opt/check</code><code>;</code>

<code>        </code><code>location / {</code>

<code>         </code><code>index index.php index.html index.htm;</code>

<code>         </code><code>allow xx</code><code>/24</code><code>;</code>

<code>         </code><code>deny all;</code>

<code>    </code><code>}</code>

<code>    </code><code>location ~ ^/(images|javascript|js|css|flash|media|static)/ {</code>

<code>expires 30d;</code>

<code>}</code>

<code>location ~ .php$ {</code>

<code>            </code><code>fastcgi_pass 127.0.0.1:9000;</code>

<code>            </code><code>fastcgi_index index.php;</code>

<code>            </code><code>fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;</code>

<code>            </code><code>include fastcgi_params;</code>

<code>        </code><code>}</code>

<code>location ~ /.ht {</code>

<code>            </code><code>deny all;</code>

<code>7.php頁面顯示</code>

<code>&lt;html&gt;</code>

<code>&lt;</code><code>head</code><code>&gt;</code>

<code>&lt;title&gt;伺服器管理統計&lt;</code><code>/title</code><code>&gt;</code>

<code>&lt;</code><code>/head</code><code>&gt;</code>

<code>&lt;body&gt;</code>

<code>&lt;?php</code>

<code>$con = mysql_connect(</code><code>"xx"</code><code>,</code><code>"xx"</code><code>,</code><code>"xx"</code><code>);</code>

<code>if</code> <code>(!$con)</code>

<code>  </code><code>{</code>

<code>  </code><code>die(</code><code>'資料庫連接配接失敗: '</code> <code>. mysql_error());</code>

<code>  </code><code>}</code>

<code>  </code><code>else</code>

<code>  </code><code>mysql_query(</code><code>"SET NAMES UTF8"</code><code>);</code>

<code>  </code><code>mysql_query(</code><code>"set character_set_client=utf8"</code><code>); </code>

<code>  </code><code>mysql_query(</code><code>"set character_set_results=utf8"</code><code>);</code>

<code>  </code><code>mysql_select_db(</code><code>"xx"</code><code>, $con);</code>

<code>  </code><code>$result = mysql_query(</code><code>"SELECT * FROM systeminfo inet_aton(ip_info)"</code><code>);</code>

<code>  </code><code>//</code><code>在表格中輸出顯示結果 </code>

<code>  </code><code>echo</code> <code>"&lt;table border=</code><code>'1'</code> <code>&gt;</code>

<code>&lt;</code><code>tr</code><code>&gt;</code>

<code>&lt;th&gt;主機IP&lt;</code><code>/th</code><code>&gt;</code>

<code>&lt;th&gt;主機名&lt;</code><code>/th</code><code>&gt;</code>

<code>&lt;th&gt;cup型号&lt;</code><code>/th</code><code>&gt;</code>

<code>&lt;th&gt;磁盤&lt;</code><code>/th</code><code>&gt;</code>

<code>&lt;th&gt;記憶體&lt;</code><code>/th</code><code>&gt;</code>

<code>&lt;th&gt;負載&lt;</code><code>/th</code><code>&gt;</code>

<code>&lt;th&gt;機房&lt;</code><code>/th</code><code>&gt;</code>

<code>&lt;</code><code>/tr</code><code>&gt;";</code>

<code>  </code><code>while</code><code>($row = mysql_fetch_array($result))</code>

<code> </code><code>echo</code> <code>"&lt;tr&gt;"</code><code>;</code>

<code> </code><code>echo</code> <code>"&lt;td&gt;"</code> <code>. $row[</code><code>'ip_info'</code><code>] . </code><code>"&lt;/td&gt;"</code><code>;</code>

<code> </code><code>echo</code> <code>"&lt;td&gt;"</code> <code>. $row[</code><code>'serv_info'</code><code>] . </code><code>"&lt;/td&gt;"</code><code>;</code>

<code> </code><code>echo</code> <code>"&lt;td&gt;"</code> <code>. $row[</code><code>'cpu_info'</code><code>] . </code><code>"&lt;/td&gt;"</code><code>;</code>

<code> </code><code>echo</code> <code>"&lt;td&gt;"</code> <code>. $row[</code><code>'disk_info'</code><code>] . </code><code>"&lt;/td&gt;"</code><code>;</code>

<code> </code><code>echo</code> <code>"&lt;td&gt;"</code> <code>. $row[</code><code>'mem_info'</code><code>] . </code><code>"&lt;/td&gt;"</code><code>;</code>

<code> </code><code>echo</code> <code>"&lt;td&gt;"</code> <code>. $row[</code><code>'load_info'</code><code>] . </code><code>"&lt;/td&gt;"</code><code>;</code>

<code> </code><code>echo</code> <code>"&lt;td&gt;"</code> <code>. $row[</code><code>'mark_info'</code><code>] . </code><code>"&lt;/td&gt;"</code><code>;</code>

<code> </code><code>echo</code> <code>"&lt;/tr&gt;"</code><code>;</code>

<code>  </code><code>echo</code> <code>"&lt;/table&gt;"</code><code>;</code>

<code>mysql_close($con);</code>

<code>?&gt;</code>

<code>&lt;</code><code>/body</code><code>&gt;</code>

本文轉自 liqius 51CTO部落格,原文連結:http://blog.51cto.com/szgb17/1783476,如需轉載請自行聯系原作者