์‚ฌ์šฉ์ž์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด ์ œ๊ณต๋˜๋Š” ๊ธฐ๊ณ„ ๋ฒˆ์—ญ์ž…๋‹ˆ๋‹ค.

์˜๋ฌธ๋ณธ๊ณผ ๋ฒˆ์—ญ๋ณธ์ด ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์˜๋ฌธ๋ณธ์ด ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ณด๋‹ค ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ํŽ˜์ด์ง€๋ฅผ ๋ฐฉ๋ฌธํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋ฌธ์ œ ์‹ ๊ณ 

Lighttpd ํ†ตํ•ฉ

Lighttpd ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒ€์€ ๊ฒฐ๊ณผ ์ธก์ • ๋ฐ ์ธ๋ฒคํ† ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Lighttpd ๋ชจ๋‹ˆํ„ฐ๋ง์€ ์›น ์„œ๋ฒ„ ์„ฑ๋Šฅ์˜ ์ „์ฒด ๊ทธ๋ฆผ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ์—๋Š” ๊ฐ€๋™ ์‹œ๊ฐ„, ๋ฐ”์ดํŠธ ๋ฐ ํŒจํ‚ท์˜ ๋„คํŠธ์›Œํฌ, ์—ฐ๊ฒฐ ์ˆ˜ ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ง€ํ‘œ ๋ฐ์ดํ„ฐ๋Š” ์‚ฌ์ „ ๊ตฌ์ถ•๋œ ๋Œ€์‹œ๋ณด๋“œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์‚ฌ์šฉ์ž ์ •์˜ ๊ฒ€์ƒ‰, ๊ทธ๋ž˜ํ”„ ๋ฐ ๊ฒฝ๊ณ  ์ •์ฑ…์„ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. Lighttpd ํ†ตํ•ฉ์€ NRI-Flex ์„ค์ •์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Lighttpd dashboard

New Relic๊ณผ์˜ ํ†ตํ•ฉ์„ ์„ค์ •ํ•œ ํ›„ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒƒ๊ณผ ๊ฐ™์€ ๋Œ€์‹œ๋ณด๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

์ธํ”„๋ผ ์—์ด์ „ํŠธ ์„ค์น˜

๋ฐ์ดํ„ฐ๋ฅผ New Relic์œผ๋กœ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ์ธํ”„๋ผ ์—์ด์ „ํŠธ๋ฅผ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค. ๋‹น์‚ฌ์˜ ์ธํ”„๋ผ ์—์ด์ „ํŠธ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์ˆ˜์ง‘ํ•˜๋ฏ€๋กœ ์•ฑ์˜ ์„ฑ๋Šฅ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. NRI-Flex ํ†ตํ•ฉ์„ ์ง€์›ํ•˜๋ ค๋ฉด ๋ฒ„์ „์ด 1.10.7 ์ด์ƒ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ธํ”„๋ผ ์—์ด์ „ํŠธ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ฐ€์ด๋“œ ์„ค์น˜ ๋Š” ์‹œ์Šคํ…œ์„ ๊ฒ€์‚ฌํ•˜๊ณ  ์‹œ์Šคํ…œ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋‹ˆํ„ฐ๋ง ์—์ด์ „ํŠธ์™€ ํ•จ๊ป˜ ์ธํ”„๋ผ ์—์ด์ „ํŠธ๋ฅผ ์„ค์น˜ํ•˜๋Š” CLI ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๊ฐ€์ด๋“œ ์„ค์น˜ ์ž‘๋™ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ๊ฐ€์ด๋“œ ์„ค์น˜ ๊ฐœ์š” ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.
  • ์ธํ”„๋ผ ์—์ด์ „ํŠธ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์„ค์น˜ํ•˜๋ ค๋ฉด Linux, Windows๋˜๋Š” macOS์šฉ ์ˆ˜๋™ ์„ค์น˜์— ๋Œ€ํ•œ ์ž์Šต์„œ๋ฅผ ๋”ฐ๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Lighttpd์™€ New Relic ํ†ตํ•ฉ

์ผ๋‹จ ์„ค์น˜๋˜๋ฉด ์ธํ”„๋ผ ์—์ด์ „ํŠธ๋Š” ์•ฑ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ New Relic์œผ๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์—์ด์ „ํŠธ์™€ ์•ฑ ๊ฐ„์— ํ†ตํ•ฉํ•˜๊ฑฐ๋‚˜ ํ†ต์‹  ๋ผ์ธ์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋‹จ ํ†ตํ•ฉ๋˜๋ฉด Lighttpd ์•ฑ์„ ์œ„ํ•œ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง ์†”๋ฃจ์…˜์œผ๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

lighttpd.conf ํŒŒ์ผ ์ˆ˜๋™ ๊ตฌ์„ฑ

URL http://INSERT_DOMAIN:INSERT_PORT/server-status?json ์—์„œ ์ธก์ •ํ•ญ๋ชฉ์„ ๋‚ด๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. lighttpd ๊ตฌ์„ฑ ํŒŒ์ผ ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    bash
    $
    cd /etc/lighttpd/
  2. ํŽธ์ง‘ํ•  lighttpd.conf ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค.

    bash
    $
    sudo nano lighttpd.conf
  3. server.modules ๊ฐ์ฒด ๋‚ด์— mod_status ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  4. server.modules๋’ค์— status.status-url = /server-status ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  5. lighttpd ํŒŒ์ผ ๊ฒฝ๋กœ๋กœ server.document-root ์—…๋ฐ์ดํŠธ /var/www/html/lighttpd-webpage

  6. lighttpd๋ฅผ ์‹คํ–‰ ์ค‘์ธ server.port ์„(๋ฅผ) ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    server.port = 9880.
  7. ๋ธŒ๋ผ์šฐ์ €์—์„œ http://INSERT_DOMAIN:INSERT_PORT/server-status?json ) ์—ด์–ด ์„œ๋ฒ„ ๊ด€๋ จ ๋ฉ”ํŠธ๋ฆญ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ์€ ์ƒ˜ํ”Œ ๊ตฌ์„ฑ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

    server.modules = (
    "mod_indexfile",
    "mod_accessโ€,
    "mod_alias",
    "mod_redirectโ€,
    "mod_status"
    )
    server.document-root = "/var/www/html/lighttpd-webpage"
    server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
    server.errorlog = "/var/log/lighttpd/error.log"
    server.pid-file = "/run/lighttpd.pid"
    server.username = "www-data"
    server.groupname = "www-data"
    server.port = 9880
    status.status-url = "/server-statusโ€

NRI-ํ”Œ๋ ‰์Šค ๊ตฌ์„ฑ

ํ˜ธ์ŠคํŠธ์— ์ธํ”„๋ผ ์—์ด์ „ํŠธ๋ฅผ ์„ค์น˜ํ•˜๋ฉด nri-flex ๋ฐ”์ด๋„ˆ๋ฆฌ๋„ ํ•จ๊ป˜ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

์ธํ”„๋ผ ์—์ด์ „ํŠธ๊ฐ€ ์„ค์น˜๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ n nri-flex r i-flex ์ €์žฅ์†Œ ์—์„œ์˜ ์„ค์น˜ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค.

ํ”Œ๋ ‰์Šค ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ๋‹ค์Œ ๊ฒฝ๋กœ์— lighttpd-http-config.yml ์ด๋ผ๋Š” ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    bash
    $
    /etc/newrelic-infra/integrations.d
  2. ๋‹ค์Œ ๊ตฌ์„ฑ์œผ๋กœ lighttpd-http-config.yml ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    • EVENT_TYPE: EVENT_TYPE NRQL์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” New Relic ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”๋กœ ๊ฐ„์ฃผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: LighttpdStatusSample).
    • URL: ์—ฌ๊ธฐ์—๋Š” json ํ˜•์‹์˜ ์ธก์ •ํ•ญ๋ชฉ(์˜ˆ: http://127.0.0.1:9880/server-status?json)์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ์€ ์ƒ˜ํ”Œ ๊ตฌ์„ฑ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

    ---
    integrations:
    - name: nri-flex
    # interval: 30s
    config:
    name: lighttpdFlex
    apis:
    - event_type: INSERT_EVENT_TYPE
    url: INSERT_URL

Lighttpd ๋กœ๊ทธ๋ฅผ New Relic์œผ๋กœ ์ „๋‹ฌ

Lighttpd ๋กœ๊ทธ๋ฅผ New Relic์— ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ๋กœ๊ทธ ์ „๋‹ฌ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Linux ์‹œ์Šคํ…œ์—์„œ๋Š” logging.yml ๋ผ๋Š” ๋กœ๊ทธ ํŒŒ์ผ์ด ์•„๋ž˜ ๊ฒฝ๋กœ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ ํŒŒ์ผ์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฉด ์œ„์˜ ๋กœ๊ทธ ์ „๋‹ฌ ๋ฌธ์„œ์— ๋”ฐ๋ผ ๋กœ๊ทธ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

bash
$
/etc/newrelic-infra/logging.d/

๋กœ๊ทธ ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜๋ฉด ๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ logging.yml ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

- name: error.log
file: /var/log/lighttpd/error.log
attributes:
logtype: lighttpd_log

New Relic ์ธํ”„๋ผ ์—์ด์ „ํŠธ ๋ฐ lighttpd ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์‹ญ์‹œ์˜ค.

๋ฐ์ดํ„ฐ ์ฝ๊ธฐ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์ธํ”„๋ผ ์—์ด์ „ํŠธ ๋ฌธ์„œ ์˜ ์ง€์นจ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธํ”„๋ผ ์—์ด์ „ํŠธ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์‹ญ์‹œ์˜ค.

bash
$
sudo systemctl restart lighttpd.service && sudo systemctl restart newrelic-infra.service

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋‹ˆํ„ฐ๋ง

Lighttpd ์„œ๋ฒ„ ์ธก์ •ํ•ญ๋ชฉ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•ด Lighttpd ๋ผ๋Š” ์‚ฌ์ „ ๋นŒ๋“œ๋œ ๋Œ€์‹œ๋ณด๋“œ ํ…œํ”Œ๋ฆฟ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์ „ ๊ตฌ์ถ•๋œ ๋Œ€์‹œ๋ณด๋“œ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. one.newrelic.com

    ์œผ๋กœ ์ด๋™ํ•˜์—ฌ

    + Integrations & Agents

    ๋ฅผ) ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  2. Dashboards

    ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ๊ฒ€์ƒ‰ ์ƒ์ž์— lighttpd์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  4. ๋ฏธ๋ฆฌ ๋นŒ๋“œ๋œ ๋Œ€์‹œ๋ณด๋“œ๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ํด๋ฆญํ•˜์—ฌ ๊ณ„์ •์— ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.

    ์œ„์˜ ๋‹จ๊ณ„์— ๋”ฐ๋ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ†ตํ•ฉ๋˜๋ฉด ๋Œ€์‹œ๋ณด๋“œ์— ๋ฉ”ํŠธ๋ฆญ์ด ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    Lighttpd ํ€ต์Šคํƒ€ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ง€ํ‘œ ๋ฐ ์•Œ๋ฆผ์„ ๋ณด๋ ค๋ฉด Install now ๋ฒ„ํŠผ์ด ์žˆ๋Š” Lighttpd ํ€ต์Šคํƒ€ํŠธ ํŽ˜์ด์ง€๋ฅผ ํŒ”๋กœ์šฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋‹ค์Œ์€ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์‹œ ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค.

    Example: ๋‰ด๋ ๋ฆญ ์ฟผ๋ฆฌ ๋นŒ๋”์—์„œ ์บก์ฒ˜๋œ ์ง€ํ‘œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

    SELECT * FROM LighttpdStatusSample LIMIT MAX

    Example: ์„œ๋ฒ„๋ณ„ ํ™œ์„ฑ ์—ฐ๊ฒฐ์„ ํ™•์ธํ•˜์„ธ์š”.

    SELECT latest(BusyServers) FROM LighttpdStatusSample TIMESERIES AUTO

๋Œ€์‹œ๋ณด๋“œ์—์„œ Lighttpd ์ง€ํ‘œ ๋ณด๊ธฐ

์•ฑ์— ๋ถ€ํ•˜ ์—์ด์ „ํŠธ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๊ธฐ๋งŒ ํ•˜๋ฉด ์ง€ํ‘œ ๋ฐ ์ด๋ฒคํŠธ์—์„œ ์›์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์€ ์›์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐจํŠธ์™€ ๊ทธ๋ž˜ํ”„๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์‹œ์Šคํ…œ ์ƒํƒœ๋ฅผ ํ•œ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

Lighttpd ํ€ต์Šคํƒ€ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ธฐ๋ณธ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์„ค์น˜ํ•˜๊ณ , ์ง€ํ‘œ์Šคํƒ€ ์•Œ๋ฆผ์„ ๋ณด๋ ค๋ฉด Install now ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ Lighttpd ํ€ต์Šคํƒ€ํŠธ ํŽ˜์ด์ง€๋ฅผ ํŒ”๋กœ์šฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๋ญ์ง€?

NRQL ์ฟผ๋ฆฌ ์ž‘์„ฑ ๋ฐ ๋Œ€์‹œ๋ณด๋“œ ์ƒ์„ฑ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ๋‹ค์Œ ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.