출처 : http://visualnet.tistory.com/334
FreeBSD + APM + cacti 설치
#vi .cshrc 수정
setenv LANG ko_KR.UTF-8
setenv LC_ALL ko_KR.UTF-8
(로케이션 한글 설정)
set prompt = "%B`whoami`%b@`hostname`[%~]#"
#source .cshrc
port 업데이트
cvsup -g -L 2 -h cvsup.jp.freebsd.org /usr/share/examples/cvsup/ports-supfile
1.apache22 설치
whereis apache22
cd /usr/ports/www/apache22
make WITH_MPM=worker install clean (2코어 활성)
선택 옵션에서 mysql 선택하고 탭ok 누르면 된다.
apache22 셋팅은 mysql55-server 와.. php5 를 설치 하고나서 한번에 셋팅 한다..
2. mysql55-server 설치
cd /usr/ports/databases/mysql55-server
#make WITH_CHARSET=utf8 WITH_COLLATION=utf8_general_ci install clean
* EUC-KR을 사용하기 위한 옵션 설치
# > make WITH_CHARSET=euckr WITH_COLLATION=euckr_korean_ci install clean
utf8로 설치 한다..
#make WITH_CHARSET=utf8 WITH_COLLATION=utf8_general_ci install clean
특별히 설정할껀 없다.
* mysql 설정파일 복사
# > cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf
3. php5 설치
apache22 와 연동하기 위하여..
cd /usr/ports/lang/php5 && make config
설정 화면에서 Build Apache module 선택후.. ok 버튼으로 넘김
cd /usr/ports/lang/php5-extensions
make config install 로 설치
설치 옵션에서 FTP GD MYSQL SOCKETS SNMP 선택후 OK 눌러 설치
설치중 나오는 옵션은 전부 탭눌러서 넘긴다.
설정
1. apache22 설정
cd /usr/local/etc/apache22
vi httpd.conf
AddType 로 검색하여 적당한 곳에..
AddType application/x-httpd-php .php .inc .html
AddType application/x-httpd-php-source .phps
추가한다.
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php .inc .html
AddType application/x-httpd-source .phps
이런식으로 적어 주면 된다.
DirectoryIndex 를 검색하여.
DirectoryIndex index.html index.php 추가해준다.
# Virtual hosts
Include etc/apache22/extra/httpd-vhosts.conf
Include 앞에 주석 해제 위와 같이 변경
vi /etc/rc.conf
apache22_enable="YES"
2. mysql 설정
cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf
vi /etc/rc.conf
mysql_enable="YES" 추가후 리붓
3.php 설정
cd /usr/local/etc
cp php.ini-development php.ini 로 카피 한다.
리붓후
sockstat -4 로 mysql 과 httpd 작동을 확인 한다..
root sshd 1174 4 tcp4 *:22 *:*
root httpd 1147 3 tcp4 6 *:80 *:*
root httpd 1147 4 tcp4 *:* *:*
mysql mysqld 1081 11 tcp4 6 *:3306 *:*
4. mysql 나머지 설정..
* 기본 사용자가 mysql로 사용하는 기본 관리 DB 설치
/usr/local/bin/mysql_install_db --user=mysql
---------------------------------------------------------------------------------------
FATAL ERROR: Could not find ./bin/my_print_defaults
If you compiled from source, you need to run 'make install' to
copy the software into the correct location ready for operation.
If you are using a binary release, you must either be at the top
level of the extracted archive, or pass the --basedir option
pointing to that location.
---------------------------------------------------------------------------------------
위와 같은 오류때문에.. mysql_install_db 가 설치가 안된다고 하면 아래 방법으로 설치
/usr/local/bin/mysql_install_db --user=mysql --basedir=/usr/local
* 관리자 비밀번호 지정 하기
/usr/local/bin/mysqladmin -u root password '패스워드' (패스워드 앞에 '은 엔터옆에 '임)
* 캐릭터셋 점검
# > mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9 to server version: 5.1.34-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> use test;
Database changed
mysql> show variables like 'c%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/share/mysql/charsets/ |
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
| concurrent_insert | ON |
| connect_timeout | 5 |
+--------------------------+----------------------------------+
12 rows in set (0.00 sec)
mysql >
mysql > quit
- 서버설정에 타라 위의 내용이 다를 수 있습니다.
quit 로 빠져 나온다..
mysql utf8 적용
vi /etc/my.cnf
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
[mysql]
dafault-character-set=utf8
mysql> use test;
Database changed
mysql> show variables like 'c%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/share/mysql/charsets/ |
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
| completion_type | NO_CHAIN |
| concurrent_insert | AUTO |
| connect_timeout | 10 |
+--------------------------+----------------------------------+
14 rows in set (0.01 sec)
mysql>
apm 설치및 셋팅이 끝났다..
mysql> status
--------------
mysql Ver 14.14 Distrib 5.1.60, for portbld-freebsd8.2 (amd64) using 5.2
Connection id: 1048
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: more
Using outfile: ''
Using delimiter: ;
Server version: 5.1.60-log FreeBSD port: mysql-server-5.1.60
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /tmp/mysql.sock
Uptime: 1 day 16 hours 37 min 20 sec
Threads: 1 Questions: 109705 Slow queries: 0 Opens: 1107 Flush tables: 1 Open tables: 54 Queries per second avg: 0.750
--------------
cacti 를 설치 합니다.
기본적으로 apm 이 설치 되어 있어야 한다. php 설치 옵션중 snmp
test# whereis cacti
cacti: /usr/ports/net-mgmt/cacti
cacti: /usr/ports/net-mgmt/cacti
test# cd /usr/ports/net-mgmt/cacti && make install clean
mysql 의 db와 계정을 셋팅한다.
# mysql -u root -p
Enter password: **********
---------------------------------------------------
mysql> create database cacti;
mysql> use mysql;
mysql> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY 'password';
mysql> FLUSH privileges;
mysql> quit
mysql -u root -p cacti < /usr/local/share/cacti/cacti.sql
php.ini timezone 수정
vi /usr/local/etc/php.ini
date.timezone = Asia/Seoul
로 수정
# vi /usr/local/share/cacti/include/config.php
--------------->modify<------------------
#database_type = "mysql";
#database_default = "cacti";
$database_hostname = "127.0.0.1";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "password";
$database_port = "3306";
------------------------------------------
vi /etc/rc.conf
snmpd_enable="YES"
snmptrapd_enable="YES"
linux_enable="YES"
cd /usr/local/share/snmp/
cp snmpd.conf.example snmpd.conf
vi snmpd.conf
#trap2sink localhost public
#rocommunity public localhost
주석 제거 해 준다.
vi /etc/crontab
*/5 * * * * cacti /usr/local/bin/php /usr/local/share/cacti/poller.php > /dev/null 2>&1
추가 해 준다.
리눅스 에뮬레이터 설치
메모리 부분 스크립트가 linux 전용으로 되어 있기 때문에 linux에뮬레이터를 설치 해야 정상적으로 작동한다.
위에 rc.conf 수정에서 linux_enable="YES" 로 한후 리붓을 해야 정상적으로 설치가 가능하다.
rc.conf 를 수정 하지 않고 설치 했을경우
root@cacti.test.com[/usr/ports/emulators/linux_base-f10]#make install clean
===> linux_base-f10-10_4 linuxulator is not (kld)loaded.
*** Error code 1
Stop in /usr/ports/emulators/linux_base-f10.
와 같은 오류 메시지를 볼수 있다
리눅스 에뮬레이터 사용시 시작스크립트인 rc.conf 에서 리눅스 모듈? 을 불러와야 정상적으로 설치가 된다.
리붓후 다시 설치 하도록 한다.
root@test.crois.net[~]#cd /usr/ports/emulators/linux_base-f10/
root@test.crois.net[~]#make install clean
cacti 메모리 부분 스크립트 변경
리눅스 용으로 작성이 되어 있기때문에 freebsd 에서 구동시키면 정상 작동이 되질 않습니다.
test# cd /usr/local/share/cacti/scripts/
test# vi linux_memory.pl
#!/usr/bin/perl
$mem = `cat /compat/linux/proc/meminfo | grep -w "$ARGV[0]"`;
$mem =~ s/($ARGV[0].*\s)(.*[0-9])( kB)//;
print $2;
-------------------------------------------------
linux 에뮬레이터 사용을 위해.
fstab 부분에 설정을 합니다.
vi /etc/fstab
linproc /compat/linux/proc linprocfs rw 0 0
vi /etc/crontab
*/5 * * * * cacti /usr/local/bin/php /usr/local/share/cacti/poller.php > /dev/null 2>&1
---------------------------------------
root@cacti.test.com[/usr/local/share/cacti/scripts]#cd /usr/local/etc/apache22/
vi httpd.conf
apache 설정
Alias /cacti /usr/local/share/cacti
<Directory "/usr/local/share/cacti">
AllowOverride None
Order Allow,deny
Allow from all
</Directory>
root@cacti.test.com[~]#/etc/rc.d/cron restart
--------------------------------------------------------
01/09/2012 10:35:02 AM - PCOMMAND: Poller[0] Host[1] WARNING: Recache Event Detected for Host
오류가 뜨면
php -q /usr/local/share/cacti/cli/poller_reindex_hosts.php -id=2 -d
php -q /usr/local/share/cacti/cli/poller_reindex_hosts.php -id=All
삭제 해 줘야 한다.
오류 관련 설정 페이지
http://docs.cacti.net/manual:087:6_reference.4_cli_script.2_reindex_hosts
정상적으로 snmpd 가 작동 하는걸 보기 위해.. 아래 명령어를 실행해 본다.
snmpwalk -v 2c -c public localhost
-----------------------------------------------------------
cacti 설정
admin:admin 으로 로그인 하고 로그인 후에 비번을 만들어 주면 된다.
Devices 부분
Host Template 부분을 ucd/net SNMP Host 로 바꿔 준다.
SNMP Version 을 Version 2 로 바꿔준다.
Associated Graph Templates 에서
2) ucd/net - CPU Usage Not Being Graphed
3) ucd/net - Load Average Not Being Graphed
4) ucd/net - Memory Usage Not Being Graphed
위와 같이 추가를 해준다.
Associated Data Queries 부분에서
1) SNMP - Interface Statistics 추가
그리고 저장.
Management 부분에서
Graph Management
기본으로 되어 있던 설정을 전부 삭제 한다.
다시
Create
New Graphs 부분에서 그래프를 만들어 준다.
Collection Methods
Data Queries
부분에서 SNMP - Interface Statistics 를 추가
전부 설치 하고 나면 5분 후 아래와 같은 그래프를 볼수 있다.
----------------------------------------------
설명이 너무 부실하여 도움이 될지는 모르겠지만..
차후좀더 수정 보완하겠습니다.
어설픈글 읽어 주셔서 감사합니다 _(__)_