এজ মাইক্রোগেটওয়ের জন্য অপারেশন এবং কনফিগারেশন রেফারেন্স

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।

এজ মাইক্রোগেটওয়ে v. 3.0.x

এজ মাইক্রোগেটওয়ে কীভাবে পরিচালনা এবং কনফিগার করতে হয় এই বিষয়টি আলোচনা করে।

আপনার ইন্টারনেট সংযোগ থাকলে এজ মাইক্রোগেটওয়ে আপগ্রেড করা হচ্ছে

এই বিভাগটি ব্যাখ্যা করে কিভাবে এজ মাইক্রোগেটওয়ের একটি বিদ্যমান ইনস্টলেশন আপগ্রেড করতে হয়। আপনি যদি ইন্টারনেট সংযোগ ছাড়াই কাজ করেন, দেখুন আমি কি ইন্টারনেট সংযোগ ছাড়া এজ মাইক্রোগেটওয়ে ইনস্টল করতে পারি? .

Apigee আপনাকে আপনার উৎপাদন পরিবেশ আপগ্রেড করার আগে নতুন সংস্করণের সাথে আপনার বিদ্যমান কনফিগারেশন পরীক্ষা করার পরামর্শ দেয়।

  1. এজ মাইক্রোগেটওয়ের সর্বশেষ সংস্করণে আপগ্রেড করতে নিম্নলিখিত npm কমান্ডটি চালান:
    npm upgrade edgemicro -g

    এজ মাইক্রোগেটওয়ের একটি নির্দিষ্ট সংস্করণে আপগ্রেড করতে, আপনাকে আপগ্রেড কমান্ডে সংস্করণ নম্বরটি নির্দিষ্ট করতে হবে। আপনি সংস্করণ নম্বর উল্লেখ না করলে, সর্বশেষ সংস্করণ ইনস্টল করা হবে। উদাহরণস্বরূপ, সংস্করণ 3.0.2 এ আপগ্রেড করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

    npm upgrade edgemicro@3.0.2 -g
  2. সংস্করণ নম্বর পরীক্ষা করুন. উদাহরণস্বরূপ, যদি আপনি সংস্করণ 3.0.2:
    edgemicro --version
    current nodejs version is v12.5.0
    current edgemicro version is 3.0.2
        
    ইনস্টল করেন
  3. অবশেষে, edgemicro-auth proxy-এর সর্বশেষ সংস্করণে আপগ্রেড করুন:
    edgemicro upgradeauth -o org_name -e env_name -u username

কনফিগারেশন পরিবর্তন করা

আপনার যে কনফিগারেশন ফাইলগুলি সম্পর্কে জানতে হবে তার মধ্যে রয়েছে:

  • ডিফল্ট সিস্টেম কনফিগারেশন ফাইল
  • একটি নতুন আরম্ভকৃত এজ মাইক্রোগেটওয়ে উদাহরণের জন্য ডিফল্ট কনফিগার ফাইল
  • চলমান উদাহরণের জন্য ডায়নামিক কনফিগারেশন ফাইল

এই বিভাগে এই ফাইলগুলি এবং সেগুলি পরিবর্তন করার বিষয়ে আপনার যা জানা দরকার তা নিয়ে আলোচনা করা হয়েছে৷

ডিফল্ট সিস্টেম কনফিগারেশন ফাইল

আপনি যখন এজ মাইক্রোগেটওয়ে ইনস্টল করেন, তখন একটি ডিফল্ট সিস্টেম কনফিগারেশন ফাইল এখানে রাখা হয়:

prefix/lib/node_modules/edgemicro/config/default.yaml

যেখানে prefix হল npm উপসর্গ ডিরেক্টরি। আপনি এই ডিরেক্টরিটি সনাক্ত করতে না পারলে এজ মাইক্রোগেটওয়ে কোথায় ইনস্টল করা আছে তা দেখুন।

আপনি যদি সিস্টেম কনফিগার ফাইলটি পরিবর্তন করেন তবে আপনাকে অবশ্যই এজ মাইক্রোগেটওয়ে পুনরায় চালু করতে হবে, পুনরায় কনফিগার করতে হবে এবং পুনরায় চালু করতে হবে:

edgemicro init
edgemicro configure [params]
edgemicro start [params]

নতুন আরম্ভ করা এজ মাইক্রোগেটওয়ে দৃষ্টান্তগুলির জন্য ডিফল্ট কনফিগার ফাইল

আপনি যখন edgemicro init চালান, তখন সিস্টেম কনফিগার ফাইল (উপরে বর্ণিত), default.yaml , ~/.edgemicro ডিরেক্টরিতে স্থাপন করা হয়।

আপনি যদি ~/.edgemicro এ কনফিগার ফাইলটি পরিবর্তন করেন, তাহলে আপনাকে অবশ্যই এজ মাইক্রোগেটওয়ে পুনরায় কনফিগার করে পুনরায় চালু করতে হবে:

edgemicro stop
edgemicro configure [params]
edgemicro start [params]

চলমান উদাহরণের জন্য ডায়নামিক কনফিগারেশন ফাইল

আপনি যখন edgemicro configure [params] চালান, তখন ~/.edgemicro এ একটি ডায়নামিক কনফিগারেশন ফাইল তৈরি হয়। এই প্যাটার্ন অনুসারে ফাইলটির নামকরণ করা হয়েছে: org - env -config.yaml , যেখানে org এবং env হল আপনার Apigee Edge প্রতিষ্ঠান এবং পরিবেশের নাম। আপনি কনফিগারেশন পরিবর্তন করতে এই ফাইলটি ব্যবহার করতে পারেন, এবং তারপর শূন্য-ডাউনটাইম দিয়ে পুনরায় লোড করতে পারেন। উদাহরণস্বরূপ, যদি আপনি একটি প্লাগইন যোগ করেন এবং কনফিগার করেন, তাহলে নিচের ব্যাখ্যা অনুযায়ী কোনো ডাউনটাইম খরচ না করে আপনি কনফিগারেশনটি পুনরায় লোড করতে পারেন।

যদি এজ মাইক্রোগেটওয়ে চলছে (শূন্য-ডাউনটাইম বিকল্প):

  1. এজ মাইক্রোগেটওয়ে কনফিগারেশনটি পুনরায় লোড করুন:
    edgemicro reload -o org_name -e env_name -k key -s secret

    কোথায়:

    • org_name হল আপনার এজ প্রতিষ্ঠানের নাম (আপনাকে অবশ্যই একজন প্রতিষ্ঠানের প্রশাসক হতে হবে)।
    • env_name হল আপনার প্রতিষ্ঠানের একটি পরিবেশ (যেমন "পরীক্ষা" বা "প্রোড")।
    • key হল সেই কী যা পূর্বে কনফিগার কমান্ড দ্বারা ফেরত দেওয়া হয়েছিল।
    • secret হল সেই কী যা পূর্বে কনফিগার কমান্ড দ্বারা ফেরত দেওয়া হয়েছিল।

    উদাহরণ স্বরূপ

    edgemicro reload -o docs -e test -k 701e70ee718ce6dc188...78b6181d000723 \
      -s 05c14356e42ed1...4e34ab0cc824

যদি এজ মাইক্রোগেটওয়ে বন্ধ করা হয়:

  1. এজ মাইক্রোগেটওয়ে রিস্টার্ট করুন:
    edgemicro start -o org_name -e env_name -k key -s secret

    কোথায়:

    • org_name হল আপনার এজ প্রতিষ্ঠানের নাম (আপনাকে অবশ্যই একজন প্রতিষ্ঠানের প্রশাসক হতে হবে)।
    • env_name হল আপনার প্রতিষ্ঠানের একটি পরিবেশ (যেমন "পরীক্ষা" বা "প্রোড")।
    • key হল সেই কী যা পূর্বে কনফিগার কমান্ড দ্বারা ফেরত দেওয়া হয়েছিল।
    • secret হল সেই কী যা পূর্বে কনফিগার কমান্ড দ্বারা ফেরত দেওয়া হয়েছিল।

    উদাহরণ স্বরূপ:

    edgemicro start -o docs -e test -k 701e70ee718ce...b6181d000723 \
      -s 05c1435...e34ab0cc824

এখানে একটি উদাহরণ কনফিগার ফাইল। কনফিগারেশন ফাইল সেটিংস সম্পর্কে বিশদ বিবরণের জন্য, এজ মাইক্রোগেটওয়ে কনফিগারেশন রেফারেন্স দেখুন।

edge_config:
  bootstrap: >-
    https://edgemicroservices-us-east-1.apigee.net/edgemicro/bootstrap/organization/docs/environment/test
  jwt_public_key: 'https://docs-test.apigee.net/edgemicro-auth/publicKey'
  managementUri: 'https://api.enterprise.apigee.com'
  vaultName: microgateway
  authUri: 'https://%s-%s.apigee.net/edgemicro-auth'
  baseUri: >-
    https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s
  bootstrapMessage: Please copy the following property to the edge micro agent config
  keySecretMessage: The following credentials are required to start edge micro
  products: 'https://docs-test.apigee.net/edgemicro-auth/products'
edgemicro:
  port: 8000
  max_connections: 1000
  max_connections_hard: 5000
  config_change_poll_interval: 600
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24
  plugins:
    sequence:
      - oauth
headers:
  x-forwarded-for: true
  x-forwarded-host: true
  x-request-id: true
  x-response-time: true
  via: true
oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  verify_api_key_url: 'https://docs-test.apigee.net/edgemicro-auth/verifyApiKey'
analytics:
  uri: >-
    https://edgemicroservices-us-east-1.apigee.net/edgemicro/axpublisher/organization/docs/environment/test

পরিবেশের ভেরিয়েবল সেট করা

কমান্ড-লাইন ইন্টারফেস কমান্ডগুলি যেগুলির জন্য আপনার এজ সংস্থা এবং পরিবেশের জন্য মান প্রয়োজন এবং এজ মাইক্রোগেটওয়ে শুরু করার জন্য প্রয়োজনীয় কী এবং গোপনীয়তাগুলি এই পরিবেশ ভেরিয়েবলগুলিতে সংরক্ষণ করা যেতে পারে:

  • EDGEMICRO_ORG
  • EDGEMICRO_ENV
  • EDGEMICRO_KEY
  • EDGEMICRO_SECRET

এই ভেরিয়েবল সেট করা ঐচ্ছিক. আপনি যদি সেগুলি সেট করেন, আপনি এজ মাইক্রোগেটওয়ে কনফিগার করতে এবং শুরু করতে কমান্ড-লাইন ইন্টারফেস (CLI) ব্যবহার করার সময় আপনাকে তাদের মানগুলি নির্দিষ্ট করতে হবে না।

এজ মাইক্রোগেটওয়ে সার্ভারে SSL কনফিগার করা হচ্ছে

Apigee Edge Microgateway-এ TLS কনফিগার করার বিষয়ে জানতে নিম্নলিখিত ভিডিওগুলি দেখুন:

ভিডিও বর্ণনা
1-ওয়ে নর্থবাউন্ড TLS কনফিগার করুন Apigee Edge Microgateway-এ TLS কনফিগার করার বিষয়ে জানুন। এই ভিডিওটি TLS এবং এর গুরুত্ব সম্পর্কে একটি সংক্ষিপ্ত বিবরণ প্রদান করে, এজ মাইক্রোগেটওয়েতে TLS এর পরিচয় দেয় এবং প্রদর্শন করে কিভাবে উত্তরমুখী ওয়ান-ওয়ে TLS কনফিগার করতে হয়।
2-ওয়ে নর্থবাউন্ড TLS কনফিগার করুন Apigee Edge Microgateway-এ TLS কনফিগার করার জন্য এটি দ্বিতীয় ভিডিও। এই ভিডিওটি ব্যাখ্যা করে কিভাবে উত্তরমুখী 2-ওয়ে TLS কনফিগার করতে হয়।
1-ওয়ে এবং 2-ওয়ে সাউথবাউন্ড TLS কনফিগার করুন Apigee Edge Microgateway-এ TLS কনফিগার করার এই তৃতীয় ভিডিওটি ব্যাখ্যা করে কিভাবে সাউথবাউন্ড 1-ওয়ে এবং 2-ওয়ে TLS কনফিগার করতে হয়।

আপনি SSL ব্যবহার করতে Microgateway সার্ভার কনফিগার করতে পারেন। উদাহরণস্বরূপ, SSL কনফিগার করা হলে, আপনি এজ মাইক্রোগেটওয়ের মাধ্যমে "https" প্রোটোকল সহ API কল করতে পারেন, যেমন:

https://localhost:8000/myapi

মাইক্রোগেটওয়ে সার্ভারে SSL কনফিগার করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. Openssl ইউটিলিটি বা আপনার পছন্দের যে কোনও পদ্ধতি ব্যবহার করে একটি SSL শংসাপত্র এবং কী তৈরি করুন বা প্রাপ্ত করুন।
  2. এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে edgemicro:ssl অ্যাট্রিবিউট যোগ করুন। বিকল্পগুলির একটি সম্পূর্ণ তালিকার জন্য, নীচের টেবিলটি দেখুন। উদাহরণ স্বরূপ:
    edgemicro:
      ssl:
       key: <absolute path to the SSL key file>
       cert: <absolute path to the SSL cert file>
       passphrase: admin123 #option added in v2.2.2
       rejectUnauthorized: true #option added in v2.2.2
       requestCert: true
  3. এজ মাইক্রোগেটওয়ে পুনরায় চালু করুন। আপনি কোন কনফিগারেশন ফাইলটি সম্পাদনা করেছেন তার উপর নির্ভর করে কনফিগারেশন পরিবর্তন করার ক্ষেত্রে বর্ণিত ধাপগুলি অনুসরণ করুন: ডিফল্ট ফাইল বা রানটাইম কনফিগারেশন ফাইল।

এখানে SSL কনফিগার করা কনফিগার ফাইলের edgemicro বিভাগের একটি উদাহরণ রয়েছে:

edgemicro:
  port: 8000
  max_connections: 1000
  max_connections_hard: 5000
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24
  plugins:
    sequence:
      - oauth
  ssl:
    key: /MyHome/SSL/em-ssl-keys/server.key
    cert: /MyHome/SSL/em-ssl-keys/server.crt
    passphrase: admin123 #option added in v2.2.2
    rejectUnauthorized: true #option added in v2.2.2

এখানে সমর্থিত সার্ভার বিকল্পগুলির একটি তালিকা রয়েছে:

অপশন বর্ণনা
key একটি ca.key ফাইলের পাথ (PEM ফরম্যাটে)।
cert একটি ca.cert ফাইলের পাথ (PEM ফর্ম্যাটে)।
pfx PFX বিন্যাসে ক্লায়েন্টের ব্যক্তিগত কী, শংসাপত্র এবং CA শংসাপত্র সহ একটি pfx ফাইলের পথ।
passphrase ব্যক্তিগত কী বা PFX-এর জন্য পাসফ্রেজ ধারণকারী একটি স্ট্রিং।
ca PEM বিন্যাসে বিশ্বস্ত শংসাপত্রের একটি তালিকা ধারণকারী ফাইলের পাথ৷
ciphers একটি ":" দ্বারা পৃথক করা সাইফার ব্যবহার করার জন্য একটি স্ট্রিং বর্ণনা করে।
rejectUnauthorized সত্য হলে, সরবরাহকৃত CA-এর তালিকার বিরুদ্ধে সার্ভার শংসাপত্র যাচাই করা হয়। যাচাইকরণ ব্যর্থ হলে, একটি ত্রুটি ফেরত দেওয়া হয়।
secureProtocol ব্যবহার করার জন্য SSL পদ্ধতি। উদাহরণ স্বরূপ, SSL কে বাধ্য করার জন্য SSLv3_method সংস্করণ 3।
servername SNI (সার্ভার নেম ইঙ্গিত) TLS এক্সটেনশনের সার্ভারের নাম।
requestCert 2-ওয়ে SSL এর জন্য সত্য; 1-ওয়ে SSL-এর জন্য মিথ্যা

ক্লায়েন্ট SSL/TLS বিকল্প ব্যবহার করে

টার্গেট এন্ডপয়েন্টের সাথে সংযোগ করার সময় আপনি এজ মাইক্রোগেটওয়েকে একটি TLS বা SSL ক্লায়েন্ট হিসাবে কনফিগার করতে পারেন। মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে, SSL/TLS বিকল্প সেট করতে লক্ষ্য উপাদান ব্যবহার করুন।

এই উদাহরণটি সেটিংস প্রদান করে যা সমস্ত হোস্টে প্রয়োগ করা হবে:

edgemicro:
...
targets:
  ssl:
    client:
      key: /Users/jdoe/nodecellar/twowayssl/ssl/client.key
      cert: /Users/jdoe/nodecellar/twowayssl/ssl/ca.crt
      passphrase: admin123
      rejectUnauthorized: true

এই উদাহরণে, সেটিংস শুধুমাত্র নির্দিষ্ট হোস্টে প্রয়োগ করা হয়:

edgemicro:
...
targets:
  - host: 'myserver.example.com'
    ssl:
      client:
        key: /Users/myname/twowayssl/ssl/client.key
        cert: /Users/myname/twowayssl/ssl/ca.crt
        passphrase: admin123
        rejectUnauthorized: true

এখানে TLS এর জন্য একটি উদাহরণ রয়েছে:

edgemicro:
...
targets:
  - host: 'myserver.example.com'
    tls:
      client:
        pfx: /Users/myname/twowayssl/ssl/client.pfx
        passphrase: admin123
        rejectUnauthorized: true

এখানে সমর্থিত ক্লায়েন্ট বিকল্পগুলির একটি তালিকা রয়েছে:

অপশন বর্ণনা
pfx PFX বিন্যাসে ক্লায়েন্টের ব্যক্তিগত কী, শংসাপত্র এবং CA শংসাপত্র সহ একটি pfx ফাইলের পথ।
key একটি ca.key ফাইলের পাথ (PEM ফরম্যাটে)।
passphrase ব্যক্তিগত কী বা PFX-এর জন্য পাসফ্রেজ ধারণকারী একটি স্ট্রিং।
cert একটি ca.cert ফাইলের পাথ (PEM ফর্ম্যাটে)।
ca PEM বিন্যাসে বিশ্বস্ত শংসাপত্রের একটি তালিকা ধারণকারী ফাইলের পাথ৷
ciphers একটি ":" দ্বারা পৃথক করা সাইফার ব্যবহার করার জন্য একটি স্ট্রিং বর্ণনা করে।
rejectUnauthorized সত্য হলে, সরবরাহকৃত CA-এর তালিকার বিরুদ্ধে সার্ভার শংসাপত্র যাচাই করা হয়। যাচাইকরণ ব্যর্থ হলে, একটি ত্রুটি ফেরত দেওয়া হয়।
secureProtocol ব্যবহার করার জন্য SSL পদ্ধতি। উদাহরণ স্বরূপ, SSL কে বাধ্য করার জন্য SSLv3_method সংস্করণ 3।
servername SNI (সার্ভার নেম ইঙ্গিত) TLS এক্সটেনশনের সার্ভারের নাম।

edgemicro-auth প্রক্সি কাস্টমাইজ করা হচ্ছে

ডিফল্টরূপে, এজ মাইক্রোগেটওয়ে OAuth2 প্রমাণীকরণের জন্য Apigee Edge-এ স্থাপন করা একটি প্রক্সি ব্যবহার করে। আপনি যখন প্রাথমিকভাবে edgemicro configure চালান তখন এই প্রক্সিটি স্থাপন করা হয়। আপনি JSON ওয়েব টোকেন (JWT) তে কাস্টম দাবির জন্য সমর্থন যোগ করতে, টোকেনের মেয়াদ শেষ করতে এবং রিফ্রেশ টোকেন তৈরি করতে এই প্রক্সিটির ডিফল্ট কনফিগারেশন পরিবর্তন করতে পারেন। বিশদ বিবরণের জন্য, গিটহাবের এজমাইক্রো-প্রমাণ পৃষ্ঠাটি দেখুন।

একটি কাস্টম প্রমাণীকরণ পরিষেবা ব্যবহার করে৷

ডিফল্টরূপে, এজ মাইক্রোগেটওয়ে OAuth2 প্রমাণীকরণের জন্য Apigee Edge-এ স্থাপন করা একটি প্রক্সি ব্যবহার করে। আপনি যখন প্রাথমিকভাবে edgemicro configure চালান তখন এই প্রক্সিটি স্থাপন করা হয়। ডিফল্টরূপে, এই প্রক্সির URL এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে নিম্নরূপ নির্দিষ্ট করা হয়েছে:

authUri: https://myorg-myenv.apigee.net/edgemicro-auth

আপনি যদি প্রমাণীকরণ পরিচালনা করতে আপনার নিজস্ব কাস্টম পরিষেবা ব্যবহার করতে চান তবে আপনার পরিষেবার দিকে নির্দেশ করতে কনফিগার ফাইলে authUri মান পরিবর্তন করুন। উদাহরণস্বরূপ, আপনার একটি পরিষেবা থাকতে পারে যা পরিচয় যাচাই করতে LDAP ব্যবহার করে।

লগ ফাইল পরিচালনা

এজ মাইক্রোগেটওয়ে প্রতিটি অনুরোধ এবং প্রতিক্রিয়া সম্পর্কে তথ্য লগ করে। লগ ফাইলগুলি ডিবাগিং এবং সমস্যা সমাধানের জন্য দরকারী তথ্য প্রদান করে।

যেখানে লগ ফাইল সংরক্ষণ করা হয়

ডিফল্টরূপে, লগ ফাইলগুলি /var/tmp এ সংরক্ষণ করা হয়।

ডিফল্ট লগ ফাইল ডিরেক্টরি পরিবর্তন কিভাবে

যে ডিরেক্টরিতে লগ ফাইলগুলি সংরক্ষণ করা হয় সেটি এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে নির্দিষ্ট করা আছে। কনফিগারেশন পরিবর্তন করাও দেখুন।

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

একটি ভিন্ন লগ ফাইল ডিরেক্টরি নির্দিষ্ট করতে dir মান পরিবর্তন করুন।

কনসোলে লগ পাঠান

আপনি লগিং কনফিগার করতে পারেন যাতে লগ তথ্য একটি লগ ফাইলের পরিবর্তে স্ট্যান্ডার্ড আউটপুটে পাঠানো হয়। নিম্নরূপ to_console পতাকা সত্যে সেট করুন:

edgemicro:
  logging:
    to_console: true

এই সেটিং সহ, লগগুলি স্ট্যান্ডার্ড আউটে পাঠানো হবে। বর্তমানে, আপনি stdout এবং একটি লগ ফাইল উভয়েই লগ পাঠাতে পারবেন না।

লগিং লেভেল কিভাবে সেট করবেন

আপনি এই লগ স্তরগুলি সেট করতে পারেন: তথ্য , সতর্ক , এবং ত্রুটি ৷ তথ্য স্তর সুপারিশ করা হয়. এটি সমস্ত API অনুরোধ এবং প্রতিক্রিয়াগুলি লগ করে এবং এটি ডিফল্ট৷

লগের ব্যবধান কিভাবে পরিবর্তন করবেন

আপনি এজ মাইক্রোগেটওয়ে কনফিগার ফাইলে এই ব্যবধানগুলি কনফিগার করতে পারেন। কনফিগারেশন পরিবর্তন করাও দেখুন।

কনফিগারযোগ্য বৈশিষ্ট্যগুলি হল:

  • stats_log_interval : (ডিফল্ট: 60) ব্যবধান, সেকেন্ডে, যখন পরিসংখ্যান রেকর্ড API লগ ফাইলে লেখা হয়।
  • rotate_interval : (ডিফল্ট: 24) ব্যবধান, ঘন্টার মধ্যে, যখন লগ ফাইলগুলি ঘোরানো হয়। উদাহরণ স্বরূপ:
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

ভাল লগ ফাইল রক্ষণাবেক্ষণ অনুশীলন

লগ ফাইল ডেটা সময়ের সাথে জমা হওয়ার সাথে সাথে, Apigee সুপারিশ করে যে আপনি নিম্নলিখিত অনুশীলনগুলি গ্রহণ করুন:

লগ ফাইল নামকরণ কনভেনশন

প্রতিটি এজ মাইক্রোগেটওয়ে ইনস্ট্যান্স তিন ধরনের লগ ফাইল তৈরি করে:

  • api - এজ মাইক্রোগেটওয়ের মাধ্যমে প্রবাহিত সমস্ত অনুরোধ এবং প্রতিক্রিয়া লগ করে। API কাউন্টার (পরিসংখ্যান) এবং ত্রুটিগুলিও এই ফাইলে লগ করা হয়েছে৷
  • err - stderr এ পাঠানো যেকোনো কিছু লগ করে।
  • আউট - stdout এ পাঠানো যেকোনো কিছু লগ করে।

এটি হল নামকরণের নিয়ম:

edgemicro-<Host Name>-<Instance ID>-<Log Type>.log

উদাহরণ স্বরূপ:

edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log
edgemicro-mymachine-local-MTQzNTg1NDMODAyMQ-err.log
edgemicro-mymachine-local-mtqzntgndmxodaymq-out.log

লগ ফাইল বিষয়বস্তু সম্পর্কে

যোগ করা হয়েছে: v2.3.3

ডিফল্টরূপে, লগিং পরিষেবা ডাউনলোড করা প্রক্সি, পণ্যের JSON এবং JSON ওয়েব টোকেন (JWT) বাদ দেয়। আপনি যদি লগ ফাইলগুলিতে এই বস্তুগুলি আউটপুট করতে চান, আপনি এজ মাইক্রোগেটওয়ে শুরু করার সময় DEBUG=* সেট করুন। উদাহরণ স্বরূপ:

DEBUG=* edgemicro start -o docs -e test -k abc123 -s xyz456

"api" লগ ফাইলের বিষয়বস্তু

"api" লগ ফাইলটিতে এজ মাইক্রোগেটওয়ের মাধ্যমে অনুরোধ এবং প্রতিক্রিয়া প্রবাহ সম্পর্কে বিস্তারিত তথ্য রয়েছে। "api" লগ ফাইলগুলির নাম এইরকম:

edgemicro-mymachine-local-MTQzNjIxOTk0NzY0Nw-api.log

এজ মাইক্রোগেটওয়েতে করা প্রতিটি অনুরোধের জন্য, "api" লগ ফাইলে চারটি ইভেন্ট ক্যাপচার করা হয়েছে:

  • ক্লায়েন্ট থেকে ইনকামিং অনুরোধ
  • টার্গেট করা বহির্গামী অনুরোধ
  • লক্ষ্য থেকে ইনকামিং প্রতিক্রিয়া
  • ক্লায়েন্ট বহির্গামী প্রতিক্রিয়া

লগ ফাইলগুলিকে আরও কমপ্যাক্ট করতে সাহায্য করার জন্য এই পৃথক এন্ট্রিগুলির প্রতিটি একটি সংক্ষিপ্ত স্বরলিপিতে উপস্থাপন করা হয়। এখানে চারটি ইভেন্টের প্রতিটির প্রতিনিধিত্ব করে চারটি নমুনা এন্ট্রি রয়েছে৷ লগ ফাইলে, এগুলি দেখতে এইরকম (লাইন নম্বরগুলি কেবল ডকে রেফারেন্সের জন্য, সেগুলি লগ ফাইলে উপস্থিত হয় না)।

(1) 1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
(2) 1436403888665 info treq m=GET, u=/, h=127.0.0.18080, i=0
(3) 1436403888672 info tres s=200, d=7, i=0
(4) 1436403888676 info res s=200, d=11, i=0

আসুন এক এক করে সেগুলি দেখি:

1. ক্লায়েন্ট থেকে আগত অনুরোধের নমুনা:

1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
  • 1436403888651 - ইউনিক্স তারিখ স্ট্যাম্প
  • তথ্য - প্রসঙ্গের উপর নির্ভর করে। লগ লেভেলের উপর নির্ভর করে তথ্য, সতর্কতা বা ত্রুটি হতে পারে। একটি পরিসংখ্যান রেকর্ডের জন্য পরিসংখ্যান, সতর্কতার জন্য সতর্কতা বা ত্রুটির জন্য ত্রুটি হতে পারে।
  • req - ইভেন্ট সনাক্ত করে। এই ক্ষেত্রে, ক্লায়েন্ট থেকে অনুরোধ.
  • m - অনুরোধে ব্যবহৃত HTTP ক্রিয়া।
  • u - বেসপাথ অনুসরণ করে URL এর অংশ।
  • h - হোস্ট এবং পোর্ট নম্বর যেখানে এজ মাইক্রোগেটওয়ে শুনছে।
  • r - দূরবর্তী হোস্ট এবং পোর্ট যেখানে ক্লায়েন্ট অনুরোধ উদ্ভূত হয়েছে।
  • i - অনুরোধ আইডি। চারটি ইভেন্ট এন্ট্রি এই আইডি শেয়ার করবে। প্রতিটি অনুরোধ একটি অনন্য অনুরোধ আইডি বরাদ্দ করা হয়. রিকোয়েস্ট আইডির মাধ্যমে লগ রেকর্ডের সম্পর্ক টার্গেটের লেটেন্সি সম্পর্কে মূল্যবান অন্তর্দৃষ্টি দিতে পারে।
  • d - এজ মাইক্রোগেটওয়ে অনুরোধটি পাওয়ার পর থেকে মিলিসেকেন্ডে সময়কাল। উপরের উদাহরণে, অনুরোধ 0 এর লক্ষ্যের প্রতিক্রিয়া 7 মিলিসেকেন্ড (লাইন 3) পরে গৃহীত হয়েছিল এবং অতিরিক্ত 4 মিলিসেকেন্ড (লাইন 4) পরে ক্লায়েন্টকে প্রতিক্রিয়া পাঠানো হয়েছিল। অন্য কথায়, মোট অনুরোধের বিলম্ব ছিল 11 মিলিসেকেন্ড, যার মধ্যে 7 মিলিসেকেন্ড টার্গেট দ্বারা নেওয়া হয়েছিল এবং 4 মিলিসেকেন্ড এজ মাইক্রোগেটওয়ে নিজেই।

2. লক্ষ্যে করা বহির্গামী অনুরোধের নমুনা:

1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
  • 1436403888651 - ইউনিক্স তারিখ স্ট্যাম্প
  • তথ্য - প্রসঙ্গের উপর নির্ভর করে। লগ লেভেলের উপর নির্ভর করে তথ্য, সতর্কতা বা ত্রুটি হতে পারে। একটি পরিসংখ্যান রেকর্ডের জন্য পরিসংখ্যান, সতর্কতার জন্য সতর্কতা বা ত্রুটির জন্য ত্রুটি হতে পারে।
  • treq - ইভেন্ট সনাক্ত করে। এই ক্ষেত্রে, লক্ষ্য অনুরোধ.
  • m - লক্ষ্য অনুরোধে ব্যবহৃত HTTP ক্রিয়া।
  • u - বেসপাথ অনুসরণ করে URL এর অংশ।
  • h - ব্যাকএন্ড টার্গেটের হোস্ট এবং পোর্ট নম্বর।
  • i - লগ এন্ট্রির আইডি। চারটি ইভেন্ট এন্ট্রি এই আইডি শেয়ার করবে।

3. লক্ষ্য থেকে আগত প্রতিক্রিয়ার নমুনা

1436403888672 info tres s=200, d=7, i=0

1436403888651 - ইউনিক্স তারিখ স্ট্যাম্প

  • তথ্য - প্রসঙ্গের উপর নির্ভর করে। লগ লেভেলের উপর নির্ভর করে তথ্য, সতর্কতা বা ত্রুটি হতে পারে। একটি পরিসংখ্যান রেকর্ডের জন্য পরিসংখ্যান, সতর্কতার জন্য সতর্কতা বা ত্রুটির জন্য ত্রুটি হতে পারে।
  • tres - ঘটনা চিহ্নিত করে। এই ক্ষেত্রে, লক্ষ্য প্রতিক্রিয়া.
  • s - HTTP প্রতিক্রিয়া স্থিতি।
  • d - মিলিসেকেন্ডে সময়কাল। টার্গেট দ্বারা API কলের জন্য সময় লাগে।
  • i - লগ এন্ট্রির আইডি। চারটি ইভেন্ট এন্ট্রি এই আইডি শেয়ার করবে।

4. ক্লায়েন্ট বহির্গামী প্রতিক্রিয়া নমুনা

1436403888676 info res s=200, d=11, i=0

1436403888651 - ইউনিক্স তারিখ স্ট্যাম্প

  • তথ্য - প্রসঙ্গের উপর নির্ভর করে। লগ লেভেলের উপর নির্ভর করে তথ্য, সতর্কতা বা ত্রুটি হতে পারে। একটি পরিসংখ্যান রেকর্ডের জন্য পরিসংখ্যান, সতর্কতার জন্য সতর্কতা বা ত্রুটির জন্য ত্রুটি হতে পারে।
  • res - ইভেন্ট সনাক্ত করে। এই ক্ষেত্রে, ক্লায়েন্টের প্রতিক্রিয়া।
  • s - HTTP প্রতিক্রিয়া স্থিতি।
  • d - মিলিসেকেন্ডে সময়কাল। টার্গেট এপিআই দ্বারা নেওয়া সময় এবং এজ মাইক্রোগেটওয়ে নিজেই যে সময় নেয় তা সহ এটি API কল দ্বারা নেওয়া মোট সময়।
  • i - লগ এন্ট্রির আইডি। চারটি ইভেন্ট এন্ট্রি এই আইডি শেয়ার করবে।

লগ ফাইল সময়সূচী

লগ ফাইলগুলি rotate_interval কনফিগারেশন বৈশিষ্ট্য দ্বারা নির্দিষ্ট ব্যবধানে ঘোরানো হয়। ঘূর্ণন ব্যবধানের মেয়াদ শেষ না হওয়া পর্যন্ত এন্ট্রি একই লগ ফাইলে যোগ করা অব্যাহত থাকবে। যাইহোক, প্রতিবার এজ মাইক্রোগেটওয়ে পুনরায় চালু হলে এটি একটি নতুন UID পায় এবং এই UID দিয়ে লগ ফাইলের একটি নতুন সেট তৈরি করে। এছাড়াও ভাল লগ ফাইল রক্ষণাবেক্ষণ অনুশীলন দেখুন.

ভুল বার্তা

কিছু লগ এন্ট্রিতে ত্রুটি বার্তা থাকবে। কোথায় এবং কেন ত্রুটিগুলি ঘটছে তা সনাক্ত করতে সহায়তা করতে, এজ মাইক্রোগেটওয়ে ত্রুটির রেফারেন্স দেখুন।

এজ মাইক্রোগেটওয়ে কনফিগারেশন রেফারেন্স

কনফিগারেশন ফাইলের অবস্থান

এই বিভাগে বর্ণিত কনফিগারেশন বৈশিষ্ট্যগুলি এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে অবস্থিত। কনফিগারেশন পরিবর্তন করাও দেখুন।

edge_config বৈশিষ্ট্য

এই সেটিংস এজ মাইক্রোগেটওয়ে ইনস্ট্যান্স এবং এপিজি এজ এর মধ্যে মিথস্ক্রিয়া কনফিগার করতে ব্যবহৃত হয়।

  • বুটস্ট্র্যাপ : (ডিফল্ট: কোনোটিই নয়) একটি URL যা Apigee এজ-এ চলমান একটি এজ মাইক্রোগেটওয়ে-নির্দিষ্ট পরিষেবার দিকে নির্দেশ করে। এজ মাইক্রোগেটওয়ে অ্যাপিজি এজের সাথে যোগাযোগ করতে এই পরিষেবাটি ব্যবহার করে। আপনি যখন পাবলিক/প্রাইভেট কী পেয়ার জেনারেট করতে কমান্ডটি চালান তখন এই URLটি ফেরত দেওয়া হয়: edgemicro genkeys । বিস্তারিত জানার জন্য এজ মাইক্রোগেটওয়ে সেট আপ এবং কনফিগার করা দেখুন।
  • jwt_public_key : (ডিফল্ট: কোনটিই নয়) একটি ইউআরএল যা এজ মাইক্রোগেটওয়ে প্রক্সির দিকে নির্দেশ করে যা এপিজি এজ এ স্থাপন করা হয়েছে। এই প্রক্সি ক্লায়েন্টদের স্বাক্ষরিত অ্যাক্সেস টোকেন ইস্যু করার জন্য একটি প্রমাণীকরণ শেষ পয়েন্ট হিসাবে কাজ করে। আপনি যখন প্রক্সি স্থাপনের কমান্ডটি চালান তখন এই URLটি ফেরত দেওয়া হয়: edgemicro configure । বিস্তারিত জানার জন্য এজ মাইক্রোগেটওয়ে সেট আপ এবং কনফিগার করা দেখুন।
  • quotaUri : আপনি যদি আপনার প্রতিষ্ঠানে স্থাপন করা edgemicro-auth প্রক্সির মাধ্যমে কোটা পরিচালনা করতে চান তবে এই কনফিগার বৈশিষ্ট্যটি সেট করুন। এই প্রপার্টি সেট করা না থাকলে, কোটা এন্ডপয়েন্ট অভ্যন্তরীণ এজ মাইক্রোগেটওয়ে এন্ডপয়েন্টে ডিফল্ট হয়।
    edge_config:
      quotaUri: https://your_org-your_env.apigee.net/edgemicro-auth
    

    এই বৈশিষ্ট্যটি ব্যবহার করার জন্য, আপনাকে প্রথমে আপনার প্রতিষ্ঠানে edgemicro-auth প্রক্সির 3.0.5 বা পরবর্তী সংস্করণ স্থাপন করতে হবে। বিস্তারিত জানার জন্য, edgemicro-auth proxy আপগ্রেড করা দেখুন।

edgemicro বৈশিষ্ট্য

এই সেটিংস এজ মাইক্রোগেটওয়ে প্রক্রিয়া কনফিগার করে।

  • port : (ডিফল্ট: 8000) যে পোর্ট নম্বরে এজ মাইক্রোগেটওয়ে প্রক্রিয়া শোনে।
  • max_connections : (ডিফল্ট: -1) এজ মাইক্রোগেটওয়ে প্রাপ্ত সর্বোচ্চ সংখ্যক যুগপত ইনকামিং সংযোগ নির্দিষ্ট করে। এই সংখ্যা অতিক্রম করা হলে, নিম্নলিখিত স্থিতি ফেরত দেওয়া হয়:

    res.statusCode = 429; // Too many requests
  • max_connections_hard : (ডিফল্ট: -1) সংযোগ বন্ধ করার আগে Edge Microgateway প্রাপ্ত সর্বোচ্চ সংখ্যক একযোগে অনুরোধ পেতে পারে। এই সেটিং পরিষেবা আক্রমণ অস্বীকার করার উদ্দেশ্যে করা হয়েছে. সাধারণত, এটিকে max_connections এর চেয়ে বড় সংখ্যায় সেট করুন।
  • লগিং :
    • স্তর : (ডিফল্ট: ত্রুটি)
      • তথ্য - একটি এজ মাইক্রোগেটওয়ে উদাহরণের মাধ্যমে প্রবাহিত সমস্ত অনুরোধ এবং প্রতিক্রিয়া লগ করে।
      • সতর্কতা - শুধুমাত্র সতর্ক বার্তা লগ করুন।
      • ত্রুটি - লগ ত্রুটি বার্তা শুধুমাত্র.
    • dir : (ডিফল্ট: /var/tmp) ডিরেক্টরি যেখানে লগ ফাইল সংরক্ষণ করা হয়।
    • stats_log_interval : (ডিফল্ট: 60) ব্যবধান, সেকেন্ডে, যখন পরিসংখ্যান রেকর্ড এপিআই লগ ফাইলে লেখা হয়।
    • rotate_interval : (ডিফল্ট: 24) ব্যবধান, ঘন্টার মধ্যে, যখন লগ ফাইলগুলি ঘোরানো হয়।
  • প্লাগইন : প্লাগইন এজ মাইক্রোগেটওয়েতে কার্যকারিতা যোগ করে। প্লাগইন উন্নয়ন সম্পর্কে বিস্তারিত জানার জন্য, কাস্টম প্লাগইন বিকাশ দেখুন।
  • dir : ./gateway ডিরেক্টরি থেকে ./plugins ডিরেক্টরিতে একটি আপেক্ষিক পথ, বা একটি পরম পথ।
  • ক্রম : আপনার এজ মাইক্রোগেটওয়ে উদাহরণে যোগ করার জন্য প্লাগইন মডিউলগুলির একটি তালিকা। মডিউলগুলি এখানে উল্লিখিত ক্রম অনুসারে কার্যকর হবে।
  • ডিবাগ: এজ মাইক্রোগেটওয়ে প্রক্রিয়ায় দূরবর্তী ডিবাগিং যোগ করে।
    • পোর্ট : শোনার জন্য পোর্ট নম্বর। উদাহরণস্বরূপ, এই পোর্টে শুনতে আপনার IDE ডিবাগার সেট করুন।
    • args : ডিবাগ প্রক্রিয়ার আর্গুমেন্ট। যেমন: args --nolazy
  • config_change_poll_interval: (ডিফল্ট: 600 সেকেন্ড) এজ মাইক্রোগেটওয়ে পর্যায়ক্রমে একটি নতুন কনফিগারেশন লোড করে এবং কিছু পরিবর্তন হলে পুনরায় লোড চালায়। পোলিং এজ-এ করা যেকোনো পরিবর্তন (পণ্যে পরিবর্তন, মাইক্রোগেটওয়ে-সচেতন প্রক্সি, ইত্যাদি) এবং সেইসাথে স্থানীয় কনফিগারেশন ফাইলে করা পরিবর্তনগুলি তুলে নেয়।
  • disable_config_poll_interval: (ডিফল্ট: মিথ্যা) স্বয়ংক্রিয় পরিবর্তন পোলিং বন্ধ করতে সত্য সেট করুন।
  • request_timeout : লক্ষ্য অনুরোধের জন্য একটি টাইমআউট সেট করে। সময়সীমা সেকেন্ডে সেট করা হয়। যদি একটি টাইমআউট ঘটে, এজ মাইক্রোগেটওয়ে একটি 504 স্ট্যাটাস কোড সহ প্রতিক্রিয়া জানায়। (v2.4.x যোগ করা হয়েছে)

শিরোনাম বৈশিষ্ট্য

এই সেটিংসগুলি কনফিগার করে যে কীভাবে নির্দিষ্ট HTTP শিরোনামগুলি ব্যবহার করা হয়।

  • x-forwarded-for : (ডিফল্ট: true) টার্গেটে পাস করার জন্য x-ফরোয়ার্ড-এর হেডার প্রতিরোধ করতে মিথ্যা সেট করুন। মনে রাখবেন যে যদি একটি x-ফরোয়ার্ড-এর জন্য হেডার অনুরোধে থাকে, তাহলে এর মান এজ অ্যানালিটিক্সে ক্লায়েন্ট-আইপি মানতে সেট করা হবে।
  • x-forwarded-host : (ডিফল্ট: সত্য) x-ফরোয়ার্ডেড-হোস্ট শিরোনামকে লক্ষ্যে পাস করা প্রতিরোধ করতে মিথ্যাতে সেট করুন।
  • x-request-id : (ডিফল্ট: true) x-request-id হেডার টার্গেটে পাস করা প্রতিরোধ করতে মিথ্যা সেট করুন।
  • x-response-time : (ডিফল্ট: সত্য) টার্গেটে পাস করা x-প্রতিক্রিয়া-সময় শিরোনাম প্রতিরোধ করতে মিথ্যা সেট করুন।
  • মাধ্যমে : (ডিফল্ট: সত্য) হেডারের মাধ্যমে লক্ষ্যে পাস করা প্রতিরোধ করতে মিথ্যা সেট করুন।

শপথ বৈশিষ্ট্য

এই সেটিংস কনফিগার করে কিভাবে ক্লায়েন্ট প্রমাণীকরণ এজ মাইক্রোগেটওয়ে দ্বারা প্রয়োগ করা হয়।

  • allowNoAuthorization : (ডিফল্ট: মিথ্যা) সত্যে সেট করা হলে, API কলগুলিকে এজ মাইক্রোগেটওয়ের মধ্য দিয়ে যাওয়ার অনুমতি দেওয়া হয় কোনো অনুমোদন শিরোনাম ছাড়াই। একটি অনুমোদন শিরোনাম (ডিফল্ট) প্রয়োজনের জন্য এটি মিথ্যাতে সেট করুন।
  • allowInvalidAuthorization : (ডিফল্ট: মিথ্যা) সত্যে সেট করা থাকলে, অনুমোদন শিরোনামে পাস করা টোকেনটি অবৈধ বা মেয়াদ শেষ হলে API কলগুলি পাস করার অনুমতি দেওয়া হয়। বৈধ টোকেন (ডিফল্ট) প্রয়োজনের জন্য এটি মিথ্যাতে সেট করুন।
  • অনুমোদন-শিরোনাম : (ডিফল্ট: অনুমোদন: বহনকারী) হেডারটি এজ মাইক্রোগেটওয়েতে অ্যাক্সেস টোকেন পাঠাতে ব্যবহৃত হয়। আপনি এমন ক্ষেত্রে ডিফল্ট পরিবর্তন করতে চাইতে পারেন যেখানে লক্ষ্যকে অন্য কোনো উদ্দেশ্যে অনুমোদন শিরোনাম ব্যবহার করতে হবে।
  • api-key-header : (ডিফল্ট: x-api-key) এজ মাইক্রোগেটওয়েতে একটি API কী পাস করতে ব্যবহৃত হেডার বা ক্যোয়ারী প্যারামিটারের নাম। এপিআই কী ব্যবহার করাও দেখুন।
  • keep-authorization-header : (ডিফল্ট: মিথ্যা) সত্যে সেট করা হলে, অনুরোধে প্রেরিত অনুমোদনের শিরোনাম টার্গেটে চলে যায় (এটি সংরক্ষিত থাকে)।
  • allowOAuthOnly -- যদি সত্যে সেট করা হয়, প্রতিটি API অবশ্যই একটি বিয়ারার অ্যাক্সেস টোকেন সহ একটি অনুমোদন শিরোনাম বহন করবে৷ আপনাকে শুধুমাত্র OAuth নিরাপত্তা মডেলের অনুমতি দেওয়ার অনুমতি দেয় (পশ্চাদগামী সামঞ্জস্য বজায় রাখার সময়)। (2.4.x যোগ করা হয়েছে)
  • অনুমতি দেয়APIKeyOnly -- যদি সত্যে সেট করা হয়, প্রতিটি API-কে অবশ্যই একটি API কী সহ একটি x-api-কী শিরোনাম (বা একটি কাস্টম অবস্থান) বহন করতে হবে৷ আপনাকে শুধুমাত্র API কী নিরাপত্তা মডেলের অনুমতি দিতে দেয় (পশ্চাদগামী সামঞ্জস্য বজায় রাখার সময়)৷ (2.4.x যোগ করা হয়েছে)
  • gracePeriod -- এই প্যারামিটারটি আপনার সিস্টেম ঘড়ি এবং JWT অনুমোদন টোকেনে উল্লেখিত সময়ে আগে নয় (nbf) বা ইস্যুড এ (iat) সময়ের মধ্যে সামান্য অসঙ্গতির কারণে সৃষ্ট ত্রুটিগুলি প্রতিরোধ করতে সাহায্য করে। এই ধরনের অসঙ্গতির জন্য অনুমতি দিতে সেকেন্ডের সংখ্যায় এই প্যারামিটার সেট করুন। (2.5.7 যোগ করা হয়েছে)

প্লাগইন-নির্দিষ্ট বৈশিষ্ট্য

প্রতিটি প্লাগইনের জন্য কনফিগারযোগ্য বৈশিষ্ট্যের বিস্তারিত জানার জন্য প্লাগইন ব্যবহার করা দেখুন।

ফিল্টারিং প্রক্সি

আপনি কোন মাইক্রোগেটওয়ে-সচেতন প্রক্সিগুলিকে একটি এজ মাইক্রোগেটওয়ে দৃষ্টান্ত প্রক্রিয়া করবে তা ফিল্টার করতে পারেন। যখন এজ মাইক্রোগেটওয়ে শুরু হয়, এটি যে সংস্থার সাথে যুক্ত তার সমস্ত মাইক্রোগেটওয়ে-সচেতন প্রক্সি ডাউনলোড করে। মাইক্রোগেটওয়ে কোন প্রক্সি প্রক্রিয়া করবে তা সীমাবদ্ধ করতে নিম্নলিখিত কনফিগারেশন ব্যবহার করুন। উদাহরণস্বরূপ, এই কনফিগারেশনটি মাইক্রোগেটওয়ে তিনটিতে প্রক্সিগুলিকে সীমাবদ্ধ করে: edgemicro_proxy-1 , edgemicro_proxy-2 , এবং edgemicro_proxy-3 :

proxies:
  - edgemicro_proxy-1
  - edgemicro_proxy-2
  - edgemicro_proxy-3

অ্যানালিটিক্স পুশ ফ্রিকোয়েন্সি কনফিগার করা হচ্ছে

এজ মাইক্রোগেটওয়ে Apigee-তে বিশ্লেষণ ডেটা পাঠায় সেই ফ্রিকোয়েন্সি নিয়ন্ত্রণ করতে এই কনফিগারেশন প্যারামিটারগুলি ব্যবহার করুন:

  • bufferSize (ঐচ্ছিক): প্রাচীনতম রেকর্ড বাদ দেওয়া শুরু করার আগে বাফারটি ধরে রাখতে পারে এমন সর্বাধিক সংখ্যক বিশ্লেষণী রেকর্ড। ডিফল্ট: 10000
  • ব্যাচসাইজ (ঐচ্ছিক): Apigee-এ পাঠানো অ্যানালিটিক্স রেকর্ডের ব্যাচের সর্বোচ্চ আকার। ডিফল্ট: 500
  • flushInterval (ঐচ্ছিক): Apigee-এ পাঠানো বিশ্লেষণ রেকর্ডের একটি ব্যাচের প্রতিটি ফ্লাশের মধ্যে মিলিসেকেন্ডের সংখ্যা। ডিফল্ট: 5000

উদাহরণ স্বরূপ:

analytics:
  bufferSize: 15000
  batchSize: 1000
  flushInterval: 6000

মাস্কিং বিশ্লেষণ তথ্য

নিম্নলিখিত কনফিগারেশন এজ অ্যানালিটিক্সে দেখানো থেকে অনুরোধের পথের তথ্যকে বাধা দেয়। অনুরোধ URI এবং/অথবা অনুরোধ পাথ মাস্ক করতে মাইক্রোগেটওয়ে কনফিগারেশনে নিম্নলিখিত যোগ করুন। মনে রাখবেন যে ইউআরআই অনুরোধের হোস্টনাম এবং পাথ অংশ নিয়ে গঠিত।

analytics:
  mask_request_uri: 'string_to_mask'
  mask_request_path: 'string_to_mask'

এজ অ্যানালিটিক্সে API কলগুলি আলাদা করা

আপনি একটি নির্দিষ্ট API পাথ আলাদা করতে বিশ্লেষণ প্লাগইন কনফিগার করতে পারেন যাতে এটি এজ অ্যানালিটিক্স ড্যাশবোর্ডে একটি পৃথক প্রক্সি হিসাবে প্রদর্শিত হয়। উদাহরণস্বরূপ, আপনি প্রকৃত API প্রক্সি কলগুলির সাথে বিভ্রান্ত হওয়া এড়াতে ড্যাশবোর্ডে একটি স্বাস্থ্য পরীক্ষা API আলাদা করতে পারেন। অ্যানালিটিক্স ড্যাশবোর্ডে, বিচ্ছিন্ন প্রক্সি এই নামকরণ প্যাটার্ন অনুসরণ করে:

edgemicro_proxyname-health

নিম্নলিখিত চিত্রটি বিশ্লেষণ ড্যাশবোর্ডে দুটি পৃথক প্রক্সি দেখায়: edgemicro_hello-health এবং edgemicro_mock-health :

আলাদা প্রক্সি হিসাবে Analytics ড্যাশবোর্ডে আপেক্ষিক এবং পরম পাথগুলিকে আলাদা করতে এই প্যারামিটারগুলি ব্যবহার করুন:

  • relatedPath (ঐচ্ছিক): Analytics ড্যাশবোর্ডে আলাদা করার জন্য একটি আপেক্ষিক পথ নির্দিষ্ট করে। উদাহরণ স্বরূপ, আপনি যদি /healthcheck নির্দিষ্ট করেন, path /healthcheck ধারণ করে এমন সমস্ত API কলগুলি ড্যাশবোর্ডে edgemicro_ proxyname -health হিসাবে প্রদর্শিত হবে। মনে রাখবেন যে এই পতাকাটি প্রক্সি বেসপাথ উপেক্ষা করে। বেসপাথ সহ একটি সম্পূর্ণ পথের উপর ভিত্তি করে আলাদা করতে, proxyPath পতাকা ব্যবহার করুন।
  • proxyPath (ঐচ্ছিক): বিশ্লেষণ ড্যাশবোর্ডে আলাদা করার জন্য প্রক্সি বেসপাথ সহ একটি সম্পূর্ণ API প্রক্সি পাথ নির্দিষ্ট করে। উদাহরণস্বরূপ, আপনি যদি /mocktarget/healthcheck নির্দিষ্ট করেন, যেখানে /mocktarget হল প্রক্সি বেসপাথ, /mocktarget/healthcheck এর সাথে সমস্ত API কলগুলি ড্যাশবোর্ডে edgemicro_ proxyname -health হিসাবে প্রদর্শিত হবে।

উদাহরণ স্বরূপ, নিম্নলিখিত কনফিগারেশনে /healthcheck ধারণ করে এমন যেকোনো API পাথ বিশ্লেষণ প্লাগইন দ্বারা আলাদা করা হবে। এর মানে, /foo/healthcheck এবং /foo/bar/healthcheck বিশ্লেষণ ড্যাশবোর্ডে edgemicro_ proxyname -health নামে একটি পৃথক প্রক্সি হিসাবে আলাদা করা হবে।

analytics:
  uri: >-
    https://xx/edgemicro/ax/org/docs/environment/test
  bufferSize: 100
  batchSize: 50
  flushInterval: 500
  relativePath: /healthcheck

নিম্নলিখিত কনফিগারেশনে প্রক্সি পাথ /mocktarget/healthcheck সহ যেকোনো API বিশ্লেষণ ড্যাশবোর্ডে edgemicro_ proxyname -health নামে একটি পৃথক প্রক্সি হিসাবে আলাদা করা হবে।

analytics:
  uri: >-
    https://xx/edgemicro/ax/org/docs/environment/test
  bufferSize: 100
  batchSize: 50
  flushInterval: 500
  proxyPath: /mocktarget/healthcheck

একটি কোম্পানির ফায়ারওয়ালের পিছনে এজ মাইক্রোগেটওয়ে সেট আপ করা হচ্ছে

সমর্থিত v2.4.x

যদি এজ মাইক্রোগেটওয়ে ফায়ারওয়ালের পিছনে ইনস্টল করা থাকে তবে গেটওয়ে অ্যাপিজি এজের সাথে যোগাযোগ করতে সক্ষম নাও হতে পারে। এই ক্ষেত্রে, আপনি বিবেচনা করতে পারেন দুটি বিকল্প আছে:

বিকল্প 1:

প্রথম বিকল্পটি হল edgemicro: proxy_tunnel অপশনটিকে মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে সত্যে সেট করা:

edge_config:

    proxy: http://10.224.16.85:3128
    proxy_tunnel: true

যখন proxy_tunnel সত্য হয়, তখন এজ মাইক্রোগেটওয়ে একটি একক TCP সংযোগের মাধ্যমে HTTP অনুরোধগুলিকে টানেল করতে HTTP CONNECT পদ্ধতি ব্যবহার করে। (প্রক্সি কনফিগার করার জন্য এনভায়রনমেন্ট ভেরিয়েবল TLS সক্ষম হলে একই কথা)।

বিকল্প 2:

দ্বিতীয় বিকল্পটি হল একটি প্রক্সি নির্দিষ্ট করা এবং প্রক্সি_টানেলকে মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে মিথ্যাতে সেট করা। উদাহরণ স্বরূপ:

edge_config:
     proxy: http://10.224.16.85:3128
     proxy_tunnel: false

এই ক্ষেত্রে, আপনি ব্যবহার করতে চান এমন প্রতিটি HTTP প্রক্সির জন্য হোস্টগুলি নিয়ন্ত্রণ করতে আপনি নিম্নলিখিত ভেরিয়েবলগুলি সেট করতে পারেন, বা কোন হোস্টগুলি এজ মাইক্রোগেটওয়ে প্রক্সিগুলি পরিচালনা করবে না: HTTP_PROXY , HTTPS_PROXY , এবং NO_PROXY

আপনি NO_PROXY কে কমা সীমাবদ্ধ ডোমেনের তালিকা হিসাবে সেট করতে পারেন যা এজ মাইক্রোগেটওয়ের প্রক্সি করা উচিত নয়৷ উদাহরণ স্বরূপ:

export NO_PROXY='localhost,localhost:8080'

HTTP_PROXY এবং HTTPS_PROXY সেট করুন HTTP প্রক্সি এন্ডপয়েন্ট এজ মাইক্রোগেটওয়ে এটিতে বার্তা পাঠাতে পারে। উদাহরণ স্বরূপ:

export HTTP_PROXY='http://localhost:3786'

export HTTPS_PROXY='https://localhost:3786'

এই ভেরিয়েবল সম্পর্কে আরও তথ্যের জন্য, https://www.npmjs.com/package/request#controlling-proxy-behaviour-using-environment-variables দেখুন

আরো দেখুন

অ্যাপিজি কমিউনিটিতে কোম্পানির ফায়ারওয়ালের পিছনে এজ মাইক্রোগেটওয়ে কীভাবে সেট আপ করবেন

মাইক্রোগেটওয়ে-সচেতন প্রক্সিগুলিতে ওয়াইল্ডকার্ড ব্যবহার করা

আপনি একটি এজমিক্রো_* (মাইক্রোগেটওয়ে-সচেতন) প্রক্সির বেস পাথে এক বা একাধিক "*" ওয়াইল্ডকার্ড ব্যবহার করতে পারেন। উদাহরণস্বরূপ, /team/*/members- এর একটি বেস পাথ ক্লায়েন্টদের https://[host]/team/blue/members এবং https://[host]/team/green/members কল করার অনুমতি দেয় আপনাকে নতুন তৈরি করার প্রয়োজন ছাড়াই নতুন দলকে সমর্থন করার জন্য API প্রক্সি। নোট করুন যে /**/ সমর্থিত নয়।

গুরুত্বপূর্ণ: Apigee একটি বেস পাথের প্রথম উপাদান হিসাবে একটি ওয়াইল্ডকার্ড "*" ব্যবহার করা সমর্থন করে না। উদাহরণস্বরূপ, এটি সমর্থিত নয়: /*/ অনুসন্ধান।

ঘোরানো JWT কী

আপনি প্রাথমিকভাবে একটি JWT তৈরি করার পরে কিছু সময়ে, আপনাকে এজ এনক্রিপ্ট করা KVM-এ সঞ্চিত সর্বজনীন/প্রাইভেট কী জোড়া পরিবর্তন করতে হতে পারে। একটি নতুন কী জোড়া তৈরি করার এই প্রক্রিয়াটিকে কী রোটেশন বলা হয়।

কিভাবে এজ মাইক্রোগেটওয়ে JWT ব্যবহার করে

JSON ওয়েব টোকেন (JWT) হল RFC7519- এ বর্ণিত একটি টোকেন স্ট্যান্ডার্ড। JWT দাবির একটি সেট স্বাক্ষর করার একটি উপায় প্রদান করে, যা JWT প্রাপকের দ্বারা নির্ভরযোগ্যভাবে যাচাই করা যেতে পারে।

Edge Microgateway OAuth নিরাপত্তার জন্য বাহক টোকেন হিসাবে JWTs ব্যবহার করে। আপনি যখন এজ মাইক্রোগেটওয়ের জন্য একটি OAuth টোকেন তৈরি করেন, তখন আপনি একটি JWT ফেরত পাবেন। তারপরে আপনি API কলের অনুমোদন শিরোনামে JWT ব্যবহার করতে পারেন। উদাহরণ স্বরূপ:

curl -i http://localhost:8000/hello -H "Authorization: Bearer eyJhbGciOiJ..dXDefZEA"

একটি নতুন JWT তৈরি করা হচ্ছে

আপনি edgemicro token কমান্ড বা একটি API ব্যবহার করে এজ মাইক্রোগেটওয়ের জন্য একটি JWT তৈরি করতে পারেন। উদাহরণ স্বরূপ:

edgemicro token get -o docs -e test -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy

এই কমান্ডটি Apigee Edge কে একটি JWT তৈরি করতে বলে যা পরে API কলগুলি যাচাই করতে ব্যবহার করা যেতে পারে। -i এবং -s পরামিতিগুলি হল আপনার Apigee Edge সংস্থার একটি বিকাশকারী অ্যাপের গ্রাহক আইডি এবং গোপন মান।

অথবা, আপনি ব্যবস্থাপনা API ব্যবহার করে একটি JWT তৈরি করতে পারেন:

curl -i -X POST "http://org-env.apigee.net/edgemicro-auth/token" \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": "your consumer key",
    "client_secret": "your consumer secret",
    "grant_type": "client_credentials"
  }'

কোথায়:

  • org হল আপনার এজ প্রতিষ্ঠানের নাম (আপনাকে অবশ্যই একজন প্রতিষ্ঠান প্রশাসক হতে হবে)।
  • env হল আপনার প্রতিষ্ঠানের একটি পরিবেশ (যেমন "পরীক্ষা" বা "প্রোড")।
  • আপনার আগে তৈরি করা ডেভেলপার অ্যাপের গ্রাহক আইডি হল client_id
  • client_secret হল আপনার আগে তৈরি করা ডেভেলপার অ্যাপের কনজিউমার সিক্রেট।

কী ঘূর্ণন কি?

আপনি প্রাথমিকভাবে একটি JWT তৈরি করার পরে কিছু সময়ে, আপনাকে এজ এনক্রিপ্ট করা KVM-এ সঞ্চিত সর্বজনীন/প্রাইভেট কী জোড়া পরিবর্তন করতে হতে পারে। একটি নতুন কী জোড়া তৈরি করার এই প্রক্রিয়াটিকে কী রোটেশন বলা হয়। যখন আপনি কীগুলি ঘোরান, তখন আপনার Apigee Edge সংস্থা/পরিবেশে "মাইক্রোগেটওয়ে" KVM-এ একটি নতুন প্রাইভেট/পাবলিক কী জোড়া তৈরি এবং সংরক্ষণ করা হয়। উপরন্তু, পুরানো পাবলিক কী এর মূল কী আইডি মান সহ ধরে রাখা হয়।

একটি JWT তৈরি করতে, Edge এনক্রিপ্ট করা KVM-এ সংরক্ষিত তথ্য ব্যবহার করে। আপনি যখন প্রাথমিকভাবে এজ microgateway সেট আপ (কনফিগার করেছেন) তখন মাইক্রোগেটওয়ে নামক একটি KVM তৈরি করা হয়েছিল এবং কী দিয়ে পপুলেট করা হয়েছিল। KVM-এর কীগুলি একটি JWT-এ স্বাক্ষর এবং এনক্রিপ্ট করতে ব্যবহৃত হয়।

KVM কীগুলির মধ্যে রয়েছে:

  • private_key - সর্বশেষ (সবচেয়ে সম্প্রতি তৈরি) RSA প্রাইভেট কী JWT-তে স্বাক্ষর করতে ব্যবহৃত হয়।

  • public_key - প্রাইভেট_কি দিয়ে স্বাক্ষরিত JWT যাচাই করতে ব্যবহৃত সর্বশেষ (সবচেয়ে সম্প্রতি তৈরি) শংসাপত্র।

  • private_key_kid - সর্বশেষ (সবচেয়ে সম্প্রতি তৈরি) ব্যক্তিগত কী আইডি। এই কী আইডিটি প্রাইভেট_কি মানের সাথে যুক্ত এবং কী ঘূর্ণন সমর্থন করতে ব্যবহৃত হয়।

  • public_key1_kid - সর্বশেষ (সবচেয়ে সম্প্রতি তৈরি) পাবলিক কী আইডি। এই কী public_key1 মানের সাথে যুক্ত এবং কী ঘূর্ণন সমর্থন করতে ব্যবহৃত হয়। এই মান প্রাইভেট কী কিডের সমান।

  • public_key1 - সর্বশেষ (সবচেয়ে সম্প্রতি তৈরি) পাবলিক কী।

আপনি যখন কী ঘূর্ণন সঞ্চালন করেন, বিদ্যমান কী মানগুলি মানচিত্রে প্রতিস্থাপিত হয় এবং পুরানো সর্বজনীন কীগুলিকে ধরে রাখতে নতুন কী যুক্ত করা হয়। উদাহরণ স্বরূপ:

  • public_key2_kid - পুরানো পাবলিক কী আইডি। এই কী public_key2 মানের সাথে যুক্ত এবং কী ঘূর্ণন সমর্থন করতে ব্যবহৃত হয়।

  • public_key2 - পুরানো পাবলিক কী।

যাচাইয়ের জন্য উপস্থাপিত JWTs নতুন পাবলিক কী ব্যবহার করে যাচাই করা হবে। যাচাইকরণ ব্যর্থ হলে, পুরানো সর্বজনীন কী ব্যবহার করা হবে, যতক্ষণ না এটি মেয়াদ শেষ হয় (30 মিনিটের পরে)। এইভাবে, আপনি অবিলম্বে API ট্র্যাফিক ব্যাহত না করে কীগুলি "ঘোরাতে" পারেন৷

কীভাবে কী ঘূর্ণন করবেন

এই বিভাগটি ব্যাখ্যা করে কিভাবে একটি কী ঘূর্ণন করতে হয়।

আপনি যদি সংস্করণ 2.5.2 এর আগে আপনার এজ মাইক্রোগেটওয়ে ইনস্ট্যান্স কনফিগার করেন

আপনি যদি সংস্করণ 2.5.2 এর আগে আপনার Edge Microgateway ইন্সট্যান্স কনফিগার করে থাকেন, তাহলে KVM এবং প্রমাণীকরণ নীতি আপগ্রেড করতে আপনাকে অবশ্যই নিম্নলিখিত দুটি কমান্ড চালাতে হবে:

upgradekvm -o org -e env -u username

এই কমান্ড সম্পর্কে আরও তথ্যের জন্য, KVM আপগ্রেড করা দেখুন।

পরবর্তী কমান্ডটি edgemicro-oauth প্রক্সি আপগ্রেড করে যা আপনার Apigee org এ স্থাপন করা হয়েছিল যখন আপনি এজ মাইক্রোগেটওয়ে কনফিগার করেছিলেন। এই প্রক্সি টোকেন তৈরি করতে প্রয়োজনীয় পরিষেবা প্রদান করে।

upgradeauth -o org -e env -u username

এই কমান্ড সম্পর্কে আরও তথ্যের জন্য, edgemicro-auth প্রক্সি আপগ্রেড করা দেখুন।

চাবি ঘোরানো

Add the following line to your ~/.edgemicro/org-env-config.yaml file, where you must specify the same organization and environment that you configured the microgateway to use:

jwk_public_keys: 'https://org-env.apigee.net/edgemicro-auth/jwkPublicKeys'

Run the key rotation command to rotate the keys. (For more information on this command, see Rotating keys .)

edgemicro rotatekey -o org -e env -u username -k kid_value

উদাহরণ স্বরূপ:

edgemicro rotatekey -o jdoe -e test -u jdoe@google.com -k 2
current nodejs version is v12.5.0
current edgemicro version is 3.0.2
password:
Checking if private key exists in the KVM...
Checking for certificate...
Found Certificate
Generating New key/cert pair...
Extract new public key
Key Rotation successfully completed!

The -k parameter specifies a Key ID (kid). This ID is used to match a specific key. Edge Microgateway uses this value to choose among a set of keys during key rotation. For more information, see Section 4.5 of the JSON Web Key specification .

After key rotation, Edge returns multiple keys to Edge Microgateway. Note in the following example, each key has a unique "kid" (Key ID) value. The microgateway then uses these keys to validate authorization tokens. If the token validation fails, the microgateway looks to see if there is an older key in the key set and tries that key. The format of the returned keys is JSON Web Key (JWK). You can read about this format in RFC 7517 .

{
  "keys": [
    {
      "kty": "RSA",
      "n": "nSl7R_0wKLiWi6cO3n8aOJwYGBtinq723Jgg8i7KKWTSTYoszOjgGsJf_MX4JEW1YCScwpE5o4o8ccQN09iHVTlIhk8CNiMZNPipClmRVjaL_8IWvMQp1iN66qy4ldWXzXnHfivUZZogCkBNqCz7VSC5rw2Jf57pdViULVvVDGwTgf46sYveW_6h8CAGaD0KLd3vZffxIkoJubh0yMy0mQP3aDOeIGf_akeZeZ6GzF7ltbKGd954iNTiKmdm8IKhz6Y3gLpC9iwQ-kex_j0CnO_daHl1coYxUSCIdv4ziWIeM3dmjQ5_2dEvUDIGG6_Az9hTpNgPE5J1tvrOHAmunQ",
      "e": "AQAB",
      "kid": "2"
    },
    {
      "kty": "RSA",
      "n": "8BKwzx34BMUcHwTuQtmp8LFRCMxbkKg_zsWD6eOMIUTAsORexTGJsTy7z-4aH0wJ3fT-3luAAUPLBQwGcuHo0P1JnbtPrpuYjaJKSZOeIMOnlryJCspmv-1xG4qAqQ9XaZ9C97oecuj7MMoNwuaZno5MvsY-oi5B_gqED3vIHUjaWCErd4reONyFSWn047dvpE6mwRhZbcOTkAHT8ZyKkHISzopkFg8CD-Mij12unxA3ldcTV7yaviXgxd3eFSD1_Z4L7ZRsDUukCJkJ-8qY2-GWjewzoxl-mAW9D1tLK6qAdc89yFem3JHRW6L1le3YK37-bs6b2a_AqJKsKm5bWw",
      "e": "AQAB",
      "kid": "1"
    }
  ]
}

Filtering downloaded proxies

By default, Edge Microgateway downloads all of the proxies in your Edge organization that start with the naming prefix "edgemicro_". You can change this default to download proxies whose names match a pattern.

  1. Open your Edge Micro config file: ~/.edgemicro/org-env-config.yaml
  2. Add the proxyPattern element under edge_config. For example, the following pattern will download proxies such as edgemicro_foo, edgemicro_fast, and edgemicro_first.
    edge_config:
    …
    proxyPattern: edgemicro_f*

Specifying products without API proxies

In Apigee Edge, you can create an API product that does not contain any API proxies. This product configuration allows an API key associated with that product to work for with any proxy deployed in your organization. As of version 2.5.4, Edge Microgateway supports this product configuration.

Debugging and troubleshooting

Connecting to a debugger

You can run Edge Microgateway with a debugger, such as node-inspector . This is useful for troubleshooting and debugging custom plugins.

  1. Restart Edge Microgateway in debug mode. To do this, add DEBUG=* to the beginning of the start command. For example:
    DEBUG=* edgemicro start -o  myorg -e test -k
          db4e9e8a95aa7fabfdeacbb1169d0a8cbe42bec19c6b98129e02 -s
          6e56af7c1b26dfe93dae78a735c8afc9796b077d105ae5618ce7ed
  2. Start your debugger and set it to listen on the port number for the debugging process.
  3. You can now step through the Edge Microgateway code, set breakpoints, watch expressions, and so on.

You can specify standard Node.js flags related to debug mode. For example, --nolazy helps with debugging asynchronous code.

Checking log files

If you're having problems, be sure to examine the log files for execution details and error information. বিস্তারিত জানার জন্য, লগ ফাইল পরিচালনা দেখুন।

Using API key security

API keys provide a simple mechanism for authenticating clients making requests to Edge Microgateway. You can obtain an API key by copying the Consumer Key (also called Client ID) value from an Apigee Edge product that includes the Edge Microgateway authentication proxy.

Caching of keys

API keys are exchanged for bearer tokens, which are cached. You can disable caching by setting the Cache-Control: no-cache header on incoming requests to Edge Microgateway.

Using an API key

You can pass the API key in an API request either as a query parameter or in a header. By default, the header and query param name are both x-api-key .

Query parameter example:

curl http://localhost:8000/foobar?x-api-key=JG616Gjz7xs4t0dvpvVsGdI49G34xGsz

Header example:

curl http://localhost:8000/foobar -H "x-api-key:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"

Configuring the API key name

By default, x-api-key is the name used for both the API key header and query parameter. You can change this default in the configuration file, as explained in Making configuration changes . For example, to change the name to apiKey :

oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  api-key-header: apiKey

In this example, both the query parameter and header name are changed to apiKey . The name x-api-key will no longer work in either case. See also Making configuration changes .

উদাহরণ স্বরূপ:

curl http://localhost:8000/foobar -H "apiKey:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"

For more information about using API keys with proxy requests, see Secure Edge Microgateway .

Enable upstream response codes

By default, the oauth plugin returns only 4xx error status codes if the response is not a 200 status. You can change this behavior so that it always returns the exact 4xx or 5xx code, depending on the error. (Released in version 3.0.7)

To enable this feature, add the oauth.useUpstreamResponse: true property to your Edge Microgateway configuration. উদাহরণ স্বরূপ:

oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  gracePeriod: 10
  useUpstreamResponse: true

Using OAuth2 token security

This section explains how to get OAuth2 access tokens and refresh tokens. Access tokens are used to make secure API calls through the microgateway. Refresh tokens are used to obtain new access tokens.

How to get an access token

This section explains how to use the edgemicro-auth proxy to get an access token.

You can also get an access token using the edgemicro token CLI command. For details on the CLI, see Managing tokens .

API 1: Send credentials as body parameters

Substitute your org and environment names in the URL, and substitute the Consumer Id and Consumer Secret values obtained from a developer app on Apigee Edge for the client_id and client_secret body parameters:

curl -i -X POST "http://<org>-<test>.apigee.net/edgemicro-auth/token" \
-d '{"grant_type": "client_credentials", "client_id": "your_client_id", \
"client_secret": "your_client_secret"}' -H "Content-Type: application/json"

API 2: Send credentials in a Basic Auth header

Send the client credentials as a Basic Authentication header and the grant_type as a form parameter. This command form is also discussed in RFC 6749: The OAuth 2.0 Authorization Framework .

http://<org>-<test>.apigee.net/edgemicro-auth/token -v -u your_client_id:your_client_secret \
-d 'grant_type=client_credentials' -H "Content-Type: application/x-www-form-urlencoded"

Sample output

The API returns a JSON response. Note that there's no difference between the token and access_token properties. You can use either one.
{
"token": "eyJraWQiOiIxIiwidHlwIjoi",
"access_token": "eyJraWQiOiIxIiwid",
"token_type": "bearer",
"expires_in": "108000"
}

How to get a refresh token

To get a refresh token, make an API call to the /token endpoint of the edgemicro-auth proxy. You MUST make this API call with the password grant type. The following steps walk through the process.

  1. Get an access and refresh token with the /token API. Note that the grant type is password :
    curl -X POST \
      https://your_organization-your_environment.apigee.net/edgemicro-auth/token \
      -H 'Content-Type: application/json' \
      -d '{
       "client_id":"mpK6l1Bx9oE5zLdifoDbF931TDnDtLq",
       "client_secret":"bUdDcFgv3nXffnU",
       "grant_type":"password",
       "username":"mpK6lBx9RoE5LiffoDbpF931TDnDtLq",
       "password":"bUdD2FvnMsXffnU"
    }'

    The API returns an access token and a refresh token. The response looks similar to this:

    {
        "token": "your-access-token",
        "access_token": "your-access-token",
        "token_type": "bearer",
        "expires_in": "108000",
        "refresh_token": "your-refresh-token",
        "refresh_token_expires_in": "431999",
        "refresh_token_issued_at": "1562087304302",
        "refresh_token_status": "approved"
    }
  2. You can now use the refresh token to get a new access token by calling the /refresh endpoint of the same API. For example:
    curl -X POST \
      https://willwitman-test.apigee.net/edgemicro-auth/refresh \
      -H 'Content-Type: application/json' \
      -d '{
       "client_id":"mpK6l1Bx9RoE5zLifoDbpF931TDnDtLq",
       "client_secret":"bUdDc2Fv3nMXffnU",
       "grant_type":"refresh_token",
       "refresh_token":"your-refresh-token"
    }'

    The API returns a new access token. The response looks similar to this:

    {
        "token": "your-new-access-token"
        }

Forever monitoring

Forever is a Node.js tool that automatically restarts a Node.js app in case the process goes down or has an error. Edge Microgateway has a forever.json file that you can configure to control how many times and with what intervals Edge Microgateway should be restarted. This file configures a Forever service called forever-monitor , which manages Forever programmatically.

You can find the forever.json file in the Edge Microgateway root install directory. See Where is Edge Microgateway installed . For details on the configuration options, refer to the forever-monitor documentation .

The edgemicro forever command includes flags that let you specify the location of the forever.json file (the -f flag), and start/stop the Forever monitoring process (the -a flag). উদাহরণ স্বরূপ:

edgemicro forever -f ~/mydir/forever.json -a start

For more information, see the Forever monitoring in the CLI reference.

Specifying a config file endpoint

If you run multiple Edge Microgateway instances, you may wish to manage their configurations from a single location. You can do this by specifying an HTTP endpoint where Edge Micro can download its configuration file. You can specify this endpoint when you start Edge Micro using the -u flag.

উদাহরণ স্বরূপ:

edgemicro start -o jdoe -e test -u http://mylocalserver/mgconfig -k public_key -s secret_key

where the mgconfig endpoint returns the contents of your configuration file. This is the file that, by default, is located in ~/.edgemicro and has the naming convention: org-env-config.yaml .

Disabling TCP connection data buffering

You can use the nodelay configuration attribute to disable data buffering for TCP connections used by Edge Microgateway.

By default TCP connections use the Nagle algorithm to buffer data before sending it off. Setting nodelay to true , disables this behavior (data will immediately fire off data each time socket.write() is called). See also the Node.js documentation for more details.

To enable nodelay , edit the Edge Micro config file as follows:

edgemicro:
  nodelay: true
  port: 8000
  max_connections: 1000
  config_change_poll_interval: 600
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

Running Edge Microgateway in standalone mode

You can run Edge Microgateway disconnected completely from any Apigee Edge dependency. This scenario, called standalone mode, lets you run and test Edge Microgateway without an Internet connection.

In standalone mode, the following features do not work, as they require connection to Apigee Edge:

  • OAuth and API key
  • কোটা
  • Analytics

On the other hand, custom plugins and spike arrest work normally, because they do not require a connection to Apigee Edge. In addition, a new plugin called extauth lets you authorize API calls to the microgateway with a JWT while in standalone mode.

Configuring and starting the gateway

To run Edge Microgateway in standalone mode:

  1. Be sure that you have Edge Microgateway version 3.0.1 or later installed. If not, you must execute the following command to upgrade to the latest version:
    npm install -g edgemicro

    If you need help, see Installing Edge Microgateway .

  2. Create a configuration file named as follows: $HOME/.edgemicro/ org_name - env_name -config.yaml

    উদাহরণ স্বরূপ:

    vi $HOME/.edgemicro/foo-bar-config.yaml
  3. Paste the following code into the file:
    edgemicro:
      port: 8000
      max_connections: 1000
      config_change_poll_interval: 600
      logging:
        level: error
        dir: /var/tmp
        stats_log_interval: 60
        rotate_interval: 24
      plugins:
        sequence:
          - extauth
          - spikearrest
    headers:
      x-forwarded-for: true
      x-forwarded-host: true
      x-request-id: true
      x-response-time: true
      via: true
    extauth:
      publickey_url: https://www.googleapis.com/oauth2/v1/certs
    spikearrest:
      timeUnit: second
      allow: 10
      buffersize: 0
  4. Export the following environment variable with the value "1":
    export EDGEMICRO_LOCAL=1
  5. Execute the following start command, where you provide values to instantiate the local proxy:
    edgemicro start -o org_name -e environment_name -a local_proxy_name \
      -v local_proxy_version -t target_url -b base_path

    কোথায়:

    • your_org is the "org" name that you used in the configuration file name.
    • your_environment is the "env" name that you used in the configuration file name.
    • local_proxy_name is the name of the local proxy that will be created. You can use any name you want.
    • local_proxy_version is the version number for the proxy.
    • target_url is the URL for the target of the proxy. (The target is the service that the proxy calls.)
    • base_path is the base path of the proxy. This value must start with a forward slash. For a root base path, specify just a forward slash; for example, "/".

    উদাহরণ স্বরূপ:

    edgemicro start -o local -e test -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
  6. Test the configuration.
    curl http://localhost:8000/echo  { "error" : "missing_authorization" }

    Because the extauth plugin is in the foo-bar-config.yaml file, you get a "missing_authorization" error. This plugin validates a JWT that must be present in the Authorization header of the API call. In the next section, you will obtain a JWT that will allow API calls to go through without the error.

Example: Obtaining an authorization token

The following example shows how to obtain a JWT from the Edge Microgateway JWT endpoint on Apigee Edge ( edgemicro-auth/jwkPublicKeys ). This endpoint is deployed when you perform a standard setup and configuration of Edge Microgateway. To obtain the JWT from the Apigee endpoint, you must first do the standard Edge Microgateway setup, and be connected to the Internet. The Apigee endpoint is used here for example purposes only and is not required. You can use another JWT token endpoint if you wish. If you do, then you'll need to obtain the JWT using the API provided for that endpoint.

The following steps explain how to get a token using the edgemicro-auth/jwkPublicKeys endpoint:.

  1. You must perform a standard setup and configuration of Edge Microgateway to deploy the edgemicro-auth proxy to your organization/environment on Apigee Edge. If you did this step previously, you do not need to repeat it.
  2. If you deployed Edge Microgateway to Apigee Cloud, you must be connected to the Internet so that you can obtain a JWT from this endpoint.
  3. Stop Edge Microgateway:
    edgemicro stop
  4. In the configuration file you created previously ( $HOME/.edgemicro / org - env -config.yaml ), point the extauth:publickey_url attribute to the edgemicro-auth/jwkPublicKeys endpoint in your Apigee Edge organization/environment. For example:
    extauth:
      publickey_url: 'https://your_org-your_env.apigee.net/edgemicro-auth/jwkPublicKeys'
  5. Restart Edge Microgateway as you did previously, using the org/env names you used in the config file name. For example:
    edgemicro start -o foo -e bar -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
  6. Get a JWT token from the authorization endpoint. Because you are using the edgemicro-auth/jwkPublicKeys endpoint, you can use this CLI command:

You can generate a JWT for Edge Microgateway using the edgemicro token command or an API. উদাহরণ স্বরূপ:

edgemicro token get -o your_org -e your_env \
  -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy

কোথায়:

  • your_org is the name of your Apigee organization for which you previously configured Edge Microgateway.
  • your_env is an environment in the organization.
  • The i option specifies the Consumer Key from a developer app that has a product that includes the edgemicro-auth proxy.
  • The s option specifies the Consumer Secret from a developer app that has a product that includes the edgemicro-auth proxy.

This command asks Apigee Edge to generate a JWT that can then be used to verify API calls.

See also Generate a token .

Test the standalone configuration

To test the configuration, call the API with the token added in the Authorization header as follows:

curl http://localhost:8000/echo -H "Authorization: Bearer your_token

উদাহরণ:

curl http://localhost:8000/echo -H "Authorization: Bearer eyJraWQiOiIxIiwidHlwIjo...iryF3kwcDWNv7OQ"

উদাহরণ আউটপুট:

{
   "headers":{
      "user-agent":"curl/7.54.0",
      "accept":"*/*",
      "x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
      "client_received_start_timestamp":"1535134472699",
      "x-authorization-claims":"eyJhdDbiO...M1OTE5MTA1NDkifQ==",
      "target_sent_start_timestamp":"1535134472702",
      "x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
      "x-forwarded-proto":"http",
      "x-forwarded-host":"localhost:8000",
      "host":"mocktarget.apigee.net",
      "x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
      "via":"1.1 localhost, 1.1 google",
      "x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
      "connection":"Keep-Alive"
   },
   "method":"GET",
   "url":"/",
   "body":""
}

Using local proxy mode

In local proxy mode, Edge Microgateway does not require a microgateway-aware proxy to be deployed on Apigee Edge. Instead, you configure a "local proxy" by providing a local proxy name, basepath, and target URL when you start the microgateway. API calls to the microgateway are then sent to the target URL of the local proxy. In all other respects, local proxy mode works exactly the same as running Edge Microgateway in its normal mode. Authentication works the same, as do spike arrest and quota enforcement, custom plugins, and so on.

Use case and example

Local proxy mode is useful when you only need to associate one single proxy with an Edge Microgateway instance. For example, you can inject Edge Microgateway into Kubernetes as a sidecar proxy, where a microgateway and a service each run in a single pod, and where the microgateway manages traffic to and from its companion service. The following figure illustrates this architecture where Edge Microgateway functions as a sidecar proxy in a Kubernetes cluster. Each microgateway instance talks only to a single endpoint on its companion service:

Edgemicro as Sidecar

A benefit of this style of architecture is that Edge Microgateway provides API management for individual services deployed to a container environment, such as a Kubernetes cluster.

Configuring local proxy mode

To configure Edge Microgateway to run in local proxy mode, follow these steps:

  1. Be sure that you have Edge Microgateway version 3.0.1 or later installed. If not, you must execute the following command to upgrade to the latest version:
    npm install -g edgemicro

    If you need help, see Installing Edge Microgateway .

  2. Run edgemicro init to set up your local configuration environment, exactly as you would in a typical Edge Microgateway setup. See also Configure Edge Microgateway .
  3. Run edgemicro configure , as you would in a typical Edge Microgateway setup procedure. For example:
    edgemicro configure -o your_org -e your_env -u your_apigee_username

    This command deploys the edgemicro-auth policy to Edge and returns a key and secret that you will need to start the microgateway. If you need help, see Configure Edge Microgateway .

  4. On Apigee Edge, create an API product and with the following mandatory configuration requirements (you can manage all other configurations as you wish):
    • You must add the edgemicro-auth proxy to the product. This proxy was deployed automatically when you ran edgemicro configure .
    • You must provide a resource path. Apigee recommends adding this path to the product: /** . To learn more, see Configuring the behavior of the resource path . See also Create API products in the Edge documentation.
  5. On Apigee Edge, create a developer, or you can use an existing developer if you wish. For help, see Adding developers using the Edge management UI .

  6. On Apigee Edge, create a developer app. You must add the API product you just created to the app. For help, see Registering an app in the Edge management UI .
  7. On the machine where Edge Microgateway is installed, export the following environment variable with the value "1".
    export EDGEMICRO_LOCAL_PROXY=1
  8. Execute the following start command:
    edgemicro start -o your_org -e your_environment -k your_key -s your_secret \
        -a local_proxy_name -v local_proxy_version -t target_url -b base_path

    কোথায়:

    • your_org is your Apigee organization.
    • your_environment is an environment in your organization.
    • your_key is the key that was returned when you ran edgemicro configure .
    • your_secret is the secret that was returned when you ran edgemicro configure .
    • local_proxy_name is the name of the local proxy that will be created.
    • local_proxy_version is the version number for the proxy.
    • target_url is the URL for the target of the proxy (the service the proxy will call).
    • base_path is the base path of the proxy. This value must start with a forward slash. For a root base path, specify just a forward slash; for example, "/".

    উদাহরণ স্বরূপ:

    edgemicro start -o your_org -e test -k 7eb6aae644cbc09035a...d2eae46a6c095f \
      -s e16e7b1f5d5e24df...ec29d409a2df853163a -a proxy1 -v 1 \
      -t http://mocktarget.apigee.net -b /echo

Testing the configuration

You can test the local proxy configuration by calling the proxy endpoint. For example, if you specified a basepath of /echo , you can call the proxy as follows:

curl  http://localhost:8000/echo
{
  "error" : "missing_authorization",
  "error_description" : "Missing Authorization header"
}

This initial API call produced an error because you did not provide a valid API key. You can find the key in the Developer app you created previously. Open the app in the Edge UI, copy the Consumer Key, and use that key as follows:

curl  http://localhost:8000/echo -H 'x-api-key:your_api_key'

উদাহরণ স্বরূপ:

curl  http://localhost:8000/echo -H "x-api-key:DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP"

উদাহরণ আউটপুট:

{
  "headers":{
    "user-agent":"curl/7.54.0",
    "accept":"*/*",
    "x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
    "client_received_start_timestamp":"1535134472699",
    "x-authorization-claims":"eyJhdWQiOi...TQ0YmUtOWNlOS05YzM1OTE5MTA1NDkifQ==",
    "target_sent_start_timestamp":"1535134472702",
    "x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
    "x-forwarded-proto":"http",
    "x-forwarded-host":"localhost:8000",
    "host":"mocktarget.apigee.net",
    "x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
    "via":"1.1 localhost, 1.1 google",
    "x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
    "connection":"Keep-Alive"
  },
  "method":"GET",
  "url":"/",
  "body":""
}